Added one test, fixed problems

This commit is contained in:
Erik Ekman 2006-08-24 22:56:19 +00:00
parent 5f74a079a6
commit 8e0db6ca54
2 changed files with 17 additions and 6 deletions

13
read.c
View file

@ -38,7 +38,7 @@ readname_loop(char *packet, char **src, char *dst, size_t length, size_t loop)
if((c & 0xc0) == 0xc0) { if((c & 0xc0) == 0xc0) {
dummy = packet + (((s[-1] & 0x3f) << 8) | s[0]); dummy = packet + (((s[-1] & 0x3f) << 8) | s[0]);
len += readname_loop(packet, &dummy, d, length - len, loop - 1); len += readname_loop(packet, &dummy, d, length - len, loop - 1);
break; goto end;
} }
while(c && len < length - 1) { while(c && len < length - 1) {
@ -48,16 +48,19 @@ readname_loop(char *packet, char **src, char *dst, size_t length, size_t loop)
c--; c--;
} }
if (len < length - 1) { if (len >= length - 1) {
break; /* We used up all space */ break; /* We used up all space */
} }
if (*s != 0) if (*s != 0) {
*d++ = '.'; *d++ = '.';
len++;
}
} }
(*src) = s+1;
dst[len++] = '\0'; dst[len++] = '\0';
end:
(*src) = s+1;
return len; return len;
} }

10
test.c
View file

@ -122,7 +122,10 @@ test_readname()
"\x3FzBCDEFGHIJKLMNOPQURSTUVXYZ0123456789abcdefghijklmnopqrstuvxyzAA" "\x3FzBCDEFGHIJKLMNOPQURSTUVXYZ0123456789abcdefghijklmnopqrstuvxyzAA"
"\x3FzBCDEFGHIJKLMNOPQURSTUVXYZ0123456789abcdefghijklmnopqrstuvxyzAA" "\x3FzBCDEFGHIJKLMNOPQURSTUVXYZ0123456789abcdefghijklmnopqrstuvxyzAA"
"\x3FzBCDEFGHIJKLMNOPQURSTUVXYZ0123456789abcdefghijklmnopqrstuvxyzAA" "\x3FzBCDEFGHIJKLMNOPQURSTUVXYZ0123456789abcdefghijklmnopqrstuvxyzAA"
"\x00\x01\x00\x01"; "\x00\x00\x01\x00\x01";
char onejump[] =
"AA\x81\x80\x00\x01\x00\x00\x00\x00\x00\x00"
"\x02hh\xc0\x15\x00\x01\x00\x01\x05zBCDE\x00";
char buf[1024]; char buf[1024];
char *data; char *data;
int rv; int rv;
@ -148,6 +151,11 @@ test_readname()
rv = readname(longname, &data, buf, 256); rv = readname(longname, &data, buf, 256);
assert(buf[256] == '\a'); assert(buf[256] == '\a');
bzero(buf, sizeof(buf));
data = onejump + sizeof(HEADER);
rv = readname(onejump, &data, buf, 256);
assert(rv == 9);
printf("OK\n"); printf("OK\n");
} }