summaryrefslogtreecommitdiff
path: root/print-radius.c
diff options
context:
space:
mode:
authorhannes <hannes>2004-01-07 08:00:51 +0000
committerhannes <hannes>2004-01-07 08:00:51 +0000
commite0d20f2c0824412b64738c6fa14f87bc8d0ef54d (patch)
tree81b81bbdd74092247b0219bb5bf88bf2e1ee51b5 /print-radius.c
parentde464d5e30af607532a416432695415b1c0a8de5 (diff)
downloadtcpdump-e0d20f2c0824412b64738c6fa14f87bc8d0ef54d.tar.gz
bugfix from Jonathan Heusser <jonny@drugphish.ch>
The first critical piece of code is found in print-isakmp.c:332. The function rawprint() does not check its arguments thus it's easy for an attacker to pass a big 'len' or a bogus 'loc' leading to a segmentation fault in the for loop. The second bug is located in print-radius.c:471. The for loop of print_attr_string() is written in an unsafe manner. 'length' and 'data' should be checked.
Diffstat (limited to 'print-radius.c')
-rw-r--r--print-radius.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/print-radius.c b/print-radius.c
index 577a327f..d388a8f1 100644
--- a/print-radius.c
+++ b/print-radius.c
@@ -44,7 +44,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "$Id: print-radius.c,v 1.23 2003-12-15 13:52:15 hannes Exp $";
+ "$Id: print-radius.c,v 1.24 2004-01-07 08:00:52 hannes Exp $";
#endif
#ifdef HAVE_CONFIG_H
@@ -476,7 +476,7 @@ print_attr_string(register u_char *data, u_int length, u_short attr_code )
break;
}
- for (i=0; i < length ; i++, data++)
+ for (i=0; *data && i < length ; i++, data++)
printf("%c",(*data < 32 || *data > 128) ? '.' : *data );
return;