chiark / gitweb /
regress: hplayback: Do not tolerate hm_rv_any values out of range
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 23 Nov 2016 17:32:09 +0000 (17:32 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Jun 2020 15:13:02 +0000 (16:13 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
regress/hplayback.c.m4

index 481d37bfaa41ab273ace85871b09dcc474db83ea..916f97daee2ff010dcecdd31a3b1a069a37184f5 100644 (file)
@@ -37,6 +37,8 @@ m4_include(hmacros.i4)
 
 #include <unistd.h>
 #include <fcntl.h>
+#include <limits.h>
+
 
 #include "harness.h"
 
@@ -348,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')