test empty domain name with offset pointer in dn_expand-empty
[libc-test] / src / regression / dn_expand-empty.c
index 62c52e3..b7287d8 100644 (file)
@@ -1,16 +1,29 @@
 // dn_expand should accept empty name (single \0)
+#define _BSD_SOURCE
 #include <resolv.h>
 #include "test.h"
 
 int main(void)
 {
-       unsigned char packet[] = "";
+       unsigned char packet[3] = "";
        char name[] = "x";
        int r;
+
+       /* empty name in packet */
        r = dn_expand(packet, packet+1, packet, name, 1);
        if (r!=1)
-               t_error("__dn_expand(\"\") returned %d, wanted 1\n", r);
-       if (*name)
-               t_error("__dn_expand(\"\") failed: got \"%s\" wanted \"\"\n", name);
+               t_error("dn_expand(\"\", name, 1) returned %d, wanted 1\n", r);
+       if (name[0])
+               t_error("dn_expand(\"\", name, 1) failed: got \"%s\" name, wanted \"\"\n", name);
+
+       /* empty name with offset pointer in packet */
+       memcpy(packet, "\xc0\2", 3);
+       name[0] = 'x';
+       r = dn_expand(packet, packet+3, packet, name, 1);
+       if (r!=2)
+               t_error("dn_expand(\"\\xc0\\2\", name, 1) returned %d, wanted 1\n", r);
+       if (name[0])
+               t_error("dn_expand(\"\\xc0\\2\", name, 1) failed: got \"%s\" name, wanted \"\"\n", name);
+
        return t_status;
 }