diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2012-10-22 20:45:59 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2012-11-27 19:10:41 +0100 |
commit | cd4e28e7c804918b6e10d9e947c198259384d151 (patch) | |
tree | e775f522e255b6316ce5245ef0d9e6c32c6c9a9a /tests/unittests | |
parent | ea0e858de08a12b1120b4ebb8fdddc81770c9651 (diff) | |
download | libssh-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/unittests')
-rw-r--r-- | tests/unittests/torture_buffer.c | 33 |
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(); |