summaryrefslogtreecommitdiff
path: root/src/libsystemd-dhcp
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2013-12-09 23:43:12 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-12-12 11:43:33 -0500
commita0ae95c9be347c1e7fbfe4977f35bfd92775eeb6 (patch)
tree7b801b4c4dcdf706e94c0654900b62f1715d7608 /src/libsystemd-dhcp
parent524cf45894e8219bb66caca58a451bffdc5167ad (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')
-rw-r--r--src/libsystemd-dhcp/test-dhcp-option.c51
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;
+}