diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-03-24 16:43:16 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-03-24 16:43:16 +0100 |
| commit | 3d9c69fb4fd0de40db14d2fa095df98a4bacebc3 (patch) | |
| tree | b68b17cc913a5a5d7c7be04a92360fddfd43506d | |
| parent | 702f7d6c0bb3242e66efb4d1c55b51e535935eab (diff) | |
| download | busybox-w32-3d9c69fb4fd0de40db14d2fa095df98a4bacebc3.tar.gz busybox-w32-3d9c69fb4fd0de40db14d2fa095df98a4bacebc3.tar.bz2 busybox-w32-3d9c69fb4fd0de40db14d2fa095df98a4bacebc3.zip | |
udhcp: add testing bits to dns en/decoder
we had two bugs there at least, must have testing
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | networking/udhcp/domain_codec.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/networking/udhcp/domain_codec.c b/networking/udhcp/domain_codec.c index c81372ad2..f116964b7 100644 --- a/networking/udhcp/domain_codec.c +++ b/networking/udhcp/domain_codec.c | |||
| @@ -6,8 +6,16 @@ | |||
| 6 | * | 6 | * |
| 7 | * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. | 7 | * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. |
| 8 | */ | 8 | */ |
| 9 | 9 | #ifdef DNS_COMPR_TESTING | |
| 10 | #include "common.h" | 10 | # define FAST_FUNC /* nothing */ |
| 11 | # define xmalloc malloc | ||
| 12 | # include <stdlib.h> | ||
| 13 | # include <stdint.h> | ||
| 14 | # include <string.h> | ||
| 15 | # include <stdio.h> | ||
| 16 | #else | ||
| 17 | # include "common.h" | ||
| 18 | #endif | ||
| 11 | 19 | ||
| 12 | #define NS_MAXDNAME 1025 /* max domain name length */ | 20 | #define NS_MAXDNAME 1025 /* max domain name length */ |
| 13 | #define NS_MAXCDNAME 255 /* max compressed domain name length */ | 21 | #define NS_MAXCDNAME 255 /* max compressed domain name length */ |
| @@ -213,3 +221,28 @@ uint8_t* FAST_FUNC dname_enc(const uint8_t *cstr, int clen, const char *src, int | |||
| 213 | *retlen = d - dname + 1; | 221 | *retlen = d - dname + 1; |
| 214 | return dname; | 222 | return dname; |
| 215 | } | 223 | } |
| 224 | |||
| 225 | #ifdef DNS_COMPR_TESTING | ||
| 226 | /* gcc -Wall -DDNS_COMPR_TESTING domain_codec.c -o domain_codec && ./domain_codec */ | ||
| 227 | int main(int argc, char **argv) | ||
| 228 | { | ||
| 229 | int len; | ||
| 230 | uint8_t *encoded; | ||
| 231 | |||
| 232 | #define DNAME_DEC(encoded,pre) dname_dec((uint8_t*)(encoded), sizeof(encoded), (pre)) | ||
| 233 | printf("'%s'\n", DNAME_DEC("\4host\3com\0", "test1:")); | ||
| 234 | printf("test2:'%s'\n", DNAME_DEC("\4host\3com\0\4host\3com\0", "")); | ||
| 235 | printf("test3:'%s'\n", DNAME_DEC("\4host\3com\0\xC0\0", "")); | ||
| 236 | printf("test4:'%s'\n", DNAME_DEC("\4host\3com\0\xC0\5", "")); | ||
| 237 | printf("test5:'%s'\n", DNAME_DEC("\4host\3com\0\xC0\5\1z\xC0\xA", "")); | ||
| 238 | |||
| 239 | #define DNAME_ENC(cache,source,lenp) dname_enc((uint8_t*)(cache), sizeof(cache), (source), (lenp)) | ||
| 240 | encoded = dname_enc(NULL, 0, "test.net", &len); | ||
| 241 | printf("test6:'%s' len:%d\n", dname_dec(encoded, len, ""), len); | ||
| 242 | encoded = DNAME_ENC("\3net\0", "test.net", &len); | ||
| 243 | printf("test7:'%s' len:%d\n", dname_dec(encoded, len, ""), len); | ||
| 244 | encoded = DNAME_ENC("\4test\3net\0", "test.net", &len); | ||
| 245 | printf("test8:'%s' len:%d\n", dname_dec(encoded, len, ""), len); | ||
| 246 | return 0; | ||
| 247 | } | ||
| 248 | #endif | ||
