diff options
author | Patrik Flykt <patrik.flykt@linux.intel.com> | 2013-12-09 23:43:12 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2013-12-12 11:43:33 -0500 |
commit | a0ae95c9be347c1e7fbfe4977f35bfd92775eeb6 (patch) | |
tree | 7b801b4c4dcdf706e94c0654900b62f1715d7608 /src/libsystemd-dhcp/test-dhcp-option.c | |
parent | 524cf45894e8219bb66caca58a451bffdc5167ad (diff) |
dhcp: Add buffer length and invalid cookie tests for DHCP options
Create an initial simple test program for these two cases.
Diffstat (limited to 'src/libsystemd-dhcp/test-dhcp-option.c')
-rw-r--r-- | src/libsystemd-dhcp/test-dhcp-option.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/libsystemd-dhcp/test-dhcp-option.c b/src/libsystemd-dhcp/test-dhcp-option.c new file mode 100644 index 0000000000..cde8c29222 --- /dev/null +++ b/src/libsystemd-dhcp/test-dhcp-option.c @@ -0,0 +1,51 @@ + +#include <stdio.h> +#include <stdbool.h> +#include <errno.h> +#include <string.h> +#include <assert.h> + +#include <util.h> + +#include "dhcp-protocol.h" +#include "dhcp-internal.h" + +static void test_invalid_buffer_length(void) +{ + DHCPMessage message; + + assert(dhcp_option_parse(&message, 0, NULL, NULL) == -EINVAL); + assert(dhcp_option_parse(&message, sizeof(DHCPMessage), NULL, NULL) + == -EINVAL); +} + +static void test_cookie(void) +{ + DHCPMessage *message; + size_t len = sizeof(DHCPMessage) + 4; + uint8_t *opt; + + message = malloc0(len); + + opt = (uint8_t *)(message + 1); + opt[0] = 0xff; + + assert(dhcp_option_parse(message, len, NULL, NULL) == -EINVAL); + + opt[0] = 99; + opt[1] = 130; + opt[2] = 83; + opt[3] = 99; + + assert(dhcp_option_parse(message, len, NULL, NULL) == -ENOMSG); + + free(message); +} + +int main(int argc, char *argv[]) +{ + test_invalid_buffer_length(); + test_cookie(); + + return 0; +} |