aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-03-24 16:43:16 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-03-24 16:43:16 +0100
commit3d9c69fb4fd0de40db14d2fa095df98a4bacebc3 (patch)
treeb68b17cc913a5a5d7c7be04a92360fddfd43506d
parent702f7d6c0bb3242e66efb4d1c55b51e535935eab (diff)
downloadbusybox-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.c37
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 */
227int 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