Applied patch #1828920 (marttj) to prevent a crash calling udp_peek with wrong args. master
authorpatthoyts <patthoyts>
Sun, 6 Jul 2008 12:39:09 +0000 (12:39 +0000)
committerpatthoyts <patthoyts>
Sun, 6 Jul 2008 12:39:09 +0000 (12:39 +0000)
ChangeLog
generic/udp_tcl.c
tests/udp.test

index 77bdc628406d8b1b232bffde7fbd4cc1d1ac1112..c2aee761673ffcc83c7c3cec2a5598de6ced3058 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2008-07-06  Pat Thoyts  <patthoyts@users.sourceforge.net>
 
 2008-07-06  Pat Thoyts  <patthoyts@users.sourceforge.net>
 
+       * generic/udp_tcl.c: Applied patch #1828920 (marttj) to prevent a
+       * tests/udp.test:    crash calling udp_peek with wrong args.
+       
        * generic/udp_tcl.c: Applied patch #1838467 (marttj) to avoid a crash
        * tests/udp.test:    when exiting with an open mcast socket.
 
        * generic/udp_tcl.c: Applied patch #1838467 (marttj) to avoid a crash
        * tests/udp.test:    when exiting with an open mcast socket.
 
index d911ed5b9ee2561f9b22ba5c666259466ac08288..fa961d1b158dba6292dd60290b901c75aa31a30e 100644 (file)
@@ -482,6 +482,10 @@ udpPeek(ClientData clientData, Tcl_Interp *interp,
     Tcl_Channel chan;
     UdpState *statePtr;
     
     Tcl_Channel chan;
     UdpState *statePtr;
     
+    if (argc < 2) {
+       Tcl_WrongNumArgs(interp, 0, NULL, "udp_peek sock ?buffersize?");
+        return TCL_ERROR;
+    }
     chan = Tcl_GetChannel(interp, (char *)argv[1], NULL);
     if (chan == (Tcl_Channel) NULL) {
         return TCL_ERROR;
     chan = Tcl_GetChannel(interp, (char *)argv[1], NULL);
     if (chan == (Tcl_Channel) NULL) {
         return TCL_ERROR;
index 2f6cd79853e4b5898afee279da74423a95a8e7eb..41f364786b98882d62b51371ce382da3d5a2b0ee 100644 (file)
@@ -206,7 +206,29 @@ test udp-3.11 {-mcastloop is boolean - on/off} -setup {
     close $s
 } -result {1 0}
 
     close $s
 } -result {1 0}
 
+test udp-4.0 {udp_peek} -constraints unix -setup {
+    set s [udp_open]
+} -body {
+    udp_peek $s
+} -cleanup {
+    close $s
+} -result {FIX ME on a unix box}
 
 
+test udp-4.1 {udp_peek} -constraints unix -setup {
+    set s [udp_open]
+} -body {
+    udp_peek $s
+} -cleanup {
+    close $s
+} -result {FIX ME on a unix box}
+
+test udp-4.2 "udp_peek: bug #1828920 - args" -constraints unix -setup {
+    set s [udp_open]
+} -body {
+    udp_peek
+} -cleanup {
+    close $s
+} -returnCodes error -match glob -result {wrong num args: *}
 
 test udp-10.1 "bug #1838467 - crash on exit" -setup {
     set s [udp_open]
 
 test udp-10.1 "bug #1838467 - crash on exit" -setup {
     set s [udp_open]