chiark / gitweb /
regress: Fix a message about length return values
[adns.git] / regress / hplayback.c.m4
index 312a04a159b064b2fccf06265ef60ace94126639..916f97daee2ff010dcecdd31a3b1a069a37184f5 100644 (file)
@@ -37,6 +37,8 @@ m4_include(hmacros.i4)
 
 #include <unistd.h>
 #include <fcntl.h>
+#include <limits.h>
+
 
 #include "harness.h"
 
@@ -147,7 +149,8 @@ static void P_updatetime(void) {
 }
 
 static void Pfdset(fd_set *set, int max) {
-  int r, c;
+  int c;
+  unsigned long ul;
   char *ep;
 
   if (!set) {
@@ -159,10 +162,10 @@ static void Pfdset(fd_set *set, int max) {
   FD_ZERO(set);
   if (vb2.buf[vb2.used] == hm_squote]hm_squote) { vb2.used++; return; }
   for (;;) {
-    r= strtoul(vb2.buf+vb2.used,&ep,10);
-    if (r>=max) Psyntax("fd set member > max");
+    ul= strtoul(vb2.buf+vb2.used,&ep,10);
+    if (ul>=max) Psyntax("fd set member > max");
     if (ep == (char*)vb2.buf+vb2.used) Psyntax("empty entry in fd set");
-    FD_SET(r,set);
+    FD_SET(ul,set);
     vb2.used= ep - (char*)vb2.buf;
     c= vb2.buf[vb2.used++];
     if (c == hm_squote]hm_squote) break;
@@ -347,8 +350,11 @@ int H$1(hm_args_massage($3,void)) {
  m4_define(`hm_rv_len',`hm_rv_succfail')
  m4_define(`hm_rv_must',`hm_rv_succfail')
  m4_define(`hm_rv_any',`
-  r= strtoul(vb2.buf+hm_r_offset,&ep,10);
-  if (*ep && *ep!=hm_squote hm_squote) Psyntax("return value not E* or positive number");
+  unsigned long ul_r= strtoul(vb2.buf+hm_r_offset,&ep,10);
+  if (ul_r < 0 || ul_r > INT_MAX ||
+      (*ep && *ep!=hm_squote hm_squote))
+    Psyntax("return value not E* or positive number");
+  r= ul_r;
   vb2.used= ep - (char*)vb2.buf;
  ')
  m4_define(`hm_rv_fd',`hm_rv_any')