emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r102952: Merge: Check return values o


From: Paul Eggert
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r102952: Merge: Check return values of some library calls.
Date: Sat, 22 Jan 2011 23:32:08 -0800
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 102952 [merge]
committer: Paul Eggert <address@hidden>
branch nick: trunk
timestamp: Sat 2011-01-22 23:32:08 -0800
message:
  Merge: Check return values of some library calls.
modified:
  lib-src/ChangeLog
  lib-src/hexl.c
  lib-src/make-docfile.c
  lib-src/movemail.c
  src/ChangeLog
  src/emacs.c
  src/frame.c
=== modified file 'lib-src/ChangeLog'
--- a/lib-src/ChangeLog 2011-01-17 19:38:39 +0000
+++ b/lib-src/ChangeLog 2011-01-23 07:30:19 +0000
@@ -1,3 +1,11 @@
+2011-01-23  Paul Eggert  <address@hidden>
+
+       Check return values of some library calls.
+       * hexl.c (main): Check fread result.
+       * make-docfile.c (main): Check chdir result.
+       (scan_c_file): Check fscanf result.
+       * movemail.c (main): Check ftruncate result.
+
 2011-01-17  Paul Eggert  <address@hidden>
 
        Include <unistd.h> unilaterally.

=== modified file 'lib-src/hexl.c'
--- a/lib-src/hexl.c    2011-01-15 23:16:57 +0000
+++ b/lib-src/hexl.c    2011-01-23 07:30:19 +0000
@@ -179,7 +179,9 @@
 
 #define hexchar(x) (isdigit (x) ? x - '0' : x - 'a' + 10)
 
-             fread (buf, 1, 10, fp); /* skip 10 bytes */
+             /* Skip 10 bytes.  */
+             if (fread (buf, 1, 10, fp) != 10)
+               break;
 
              for (i=0; i < 16; ++i)
                {
@@ -207,7 +209,9 @@
                  if (i < 16)
                    break;
 
-                 fread (buf, 1, 18, fp); /* skip 18 bytes */
+                 /* Skip 18 bytes.  */
+                 if (fread (buf, 1, 18, fp) != 18)
+                   break;
                }
            }
        }

=== modified file 'lib-src/make-docfile.c'
--- a/lib-src/make-docfile.c    2011-01-17 19:01:01 +0000
+++ b/lib-src/make-docfile.c    2011-01-23 07:30:19 +0000
@@ -158,7 +158,11 @@
     }
   if (argc > i + 1 && !strcmp (argv[i], "-d"))
     {
-      chdir (argv[i + 1]);
+      if (chdir (argv[i + 1]) != 0)
+       {
+         perror (argv[i + 1]);
+         return EXIT_FAILURE;
+       }
       i += 2;
     }
 
@@ -648,6 +652,7 @@
 
              if (defunflag && (commas == 1 || commas == 2))
                {
+                 int scanned = 0;
                  do
                    c = getc (infile);
                  while (c == ' ' || c == '\n' || c == '\r' || c == '\t');
@@ -655,12 +660,14 @@
                    goto eof;
                  ungetc (c, infile);
                  if (commas == 2) /* pick up minargs */
-                   fscanf (infile, "%d", &minargs);
+                   scanned = fscanf (infile, "%d", &minargs);
                  else /* pick up maxargs */
                    if (c == 'M' || c == 'U') /* MANY || UNEVALLED */
                      maxargs = -1;
                    else
-                     fscanf (infile, "%d", &maxargs);
+                     scanned = fscanf (infile, "%d", &maxargs);
+                 if (scanned < 0)
+                   goto eof;
                }
            }
 

=== modified file 'lib-src/movemail.c'
--- a/lib-src/movemail.c        2011-01-17 19:01:01 +0000
+++ b/lib-src/movemail.c        2011-01-23 07:30:19 +0000
@@ -488,7 +488,8 @@
 #ifdef MAIL_USE_SYSTEM_LOCK
       if (! preserve_mail)
        {
-         ftruncate (indesc, 0L);
+         if (ftruncate (indesc, 0L) != 0)
+           pfatal_with_name (inname);
        }
 #endif /* MAIL_USE_SYSTEM_LOCK */
 

=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-01-23 04:34:48 +0000
+++ b/src/ChangeLog     2011-01-23 07:32:08 +0000
@@ -1,5 +1,10 @@
 2011-01-23  Paul Eggert  <address@hidden>
 
+       Check return values of some library calls.
+       * emacs.c (main): Check dup result.
+       * frame.c: Include <limits.h>, for INT_MIN and INT_MAX.
+       (frame_name_fnn_p): Check strtol result.
+
        * image.c (x_create_bitmap_from_xpm_data): Add cast to fix type clash
        when calling XpmCreatePixmapFromData.
 

=== modified file 'src/emacs.c'
--- a/src/emacs.c       2011-01-23 02:56:06 +0000
+++ b/src/emacs.c       2011-01-23 07:30:19 +0000
@@ -912,13 +912,12 @@
          emacs_close (0);
          emacs_close (1);
          result = emacs_open (term, O_RDWR, 0);
-         if (result < 0)
+         if (result < 0 || dup (0) < 0)
            {
              char *errstring = strerror (errno);
              fprintf (stderr, "%s: %s: %s\n", argv[0], term, errstring);
              exit (1);
            }
-         dup (0);
          if (! isatty (0))
            {
              fprintf (stderr, "%s: %s: not a tty\n", argv[0], term);

=== modified file 'src/frame.c'
--- a/src/frame.c       2011-01-23 02:56:06 +0000
+++ b/src/frame.c       2011-01-23 07:30:19 +0000
@@ -23,6 +23,8 @@
 
 #include <stdio.h>
 #include <ctype.h>
+#include <errno.h>
+#include <limits.h>
 #include <setjmp.h>
 #include "lisp.h"
 #include "character.h"
@@ -2149,10 +2151,13 @@
   if (len > 1 && str[0] == 'F')
     {
       char *end_ptr;
-
-      strtol (str + 1, &end_ptr, 10);
-
-      if (end_ptr == str + len)
+      long int n;
+      errno = 0;
+      n = strtol (str + 1, &end_ptr, 10);
+
+      if (end_ptr == str + len
+         && INT_MIN <= n && n <= INT_MAX
+         && ((LONG_MIN < n && n < LONG_MAX) || errno != ERANGE))
        return 1;
     }
   return 0;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]