aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2012-10-22 20:45:59 +0200
committerAndreas Schneider <asn@cryptomilk.org>2012-11-27 19:10:41 +0100
commitcd4e28e7c804918b6e10d9e947c198259384d151 (patch)
treee775f522e255b6316ce5245ef0d9e6c32c6c9a9a /tests
parentea0e858de08a12b1120b4ebb8fdddc81770c9651 (diff)
downloadlibssh-cd4e28e7c804918b6e10d9e947c198259384d151.tar.gz
libssh-cd4e28e7c804918b6e10d9e947c198259384d151.tar.xz
libssh-cd4e28e7c804918b6e10d9e947c198259384d151.zip
test: Try to fetch wrong values in buffer.
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/unittests/torture_buffer.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/unittests/torture_buffer.c b/tests/unittests/torture_buffer.c
index 8215cd40..511cdf45 100644
--- a/tests/unittests/torture_buffer.c
+++ b/tests/unittests/torture_buffer.c
@@ -84,12 +84,45 @@ static void torture_buffer_prepend(void **state) {
}
+/*
+ * Test the behavior of buffer_get_ssh_string with invalid data
+ */
+static void torture_buffer_get_ssh_string(void **state) {
+ ssh_buffer buffer;
+ int i,j,k,l;
+ /* some values that can go wrong */
+ uint32_t values[] = {0xffffffff, 0xfffffffe, 0xfffffffc, 0xffffff00,
+ 0x80000000, 0x80000004, 0x7fffffff};
+ char data[128];
+ (void)state;
+ memset(data,'X',sizeof(data));
+ for(i=0; i < (int)(sizeof(values)/sizeof(values[0]));++i){
+ for(j=0; j< (int)sizeof(data);++j){
+ for(k=1;k<5;++k){
+ buffer=buffer_new();
+ for(l=0;l<k;++l){
+ buffer_add_u32(buffer,htonl(values[i]));
+ }
+ buffer_add_data(buffer,data,j);
+ for(l=0;l<k;++l){
+ ssh_string str = buffer_get_ssh_string(buffer);
+ assert_true(str==NULL);
+ }
+ buffer_free(buffer);
+ }
+ }
+ }
+}
+
+
+
int torture_run_tests(void) {
int rc;
const UnitTest tests[] = {
unit_test_setup_teardown(torture_growing_buffer, setup, teardown),
unit_test_setup_teardown(torture_growing_buffer_shifting, setup, teardown),
unit_test_setup_teardown(torture_buffer_prepend, setup, teardown),
+ unit_test(torture_buffer_get_ssh_string),
};
ssh_init();