Adds a check for "digits only" within the length field of a "netstring". BUG: http://www.guninski.com/qmail-qmtpd.html diff -ruN qmail-1.03-7.052/qmail-qmtpd.c qmail-1.03-7.051/qmail-qmtpd.c --- qmail-1.03-7.052/qmail-qmtpd.c 1998-06-15 06:53:16.000000000 -0400 +++ qmail-1.03-7.051/qmail-qmtpd.c 2008-01-23 09:27:30.000000000 -0500 @@ -45,6 +45,8 @@ for (;;) { substdio_get(&ssin,&ch,1); if (ch == ':') return len; + /* trap non-numeric input in netstring: */ + if ((ch < '0') || (ch > '9')) badproto(); if (len > 200000000) resources(); len = 10 * len + (ch - '0'); } @@ -193,6 +195,8 @@ substdio_get(&ssin,&ch,1); --biglen; if (ch == ':') break; + /* trap non-numeric input in netstring: */ + if ((ch < '0') || (ch > '9')) badproto(); if (len > 200000000) resources(); len = 10 * len + (ch - '0'); }