Commit 9055082e authored by Paul Eggert's avatar Paul Eggert

Check return values of some library calls.

parent f77fabaf
2011-01-23 Paul Eggert <eggert@cs.ucla.edu>
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 <eggert@cs.ucla.edu> 2011-01-17 Paul Eggert <eggert@cs.ucla.edu>
Include <unistd.h> unilaterally. Include <unistd.h> unilaterally.
......
...@@ -179,7 +179,9 @@ main (int argc, char **argv) ...@@ -179,7 +179,9 @@ main (int argc, char **argv)
#define hexchar(x) (isdigit (x) ? x - '0' : x - 'a' + 10) #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) for (i=0; i < 16; ++i)
{ {
...@@ -207,7 +209,9 @@ main (int argc, char **argv) ...@@ -207,7 +209,9 @@ main (int argc, char **argv)
if (i < 16) if (i < 16)
break; break;
fread (buf, 1, 18, fp); /* skip 18 bytes */ /* Skip 18 bytes. */
if (fread (buf, 1, 18, fp) != 18)
break;
} }
} }
} }
......
...@@ -158,7 +158,11 @@ main (int argc, char **argv) ...@@ -158,7 +158,11 @@ main (int argc, char **argv)
} }
if (argc > i + 1 && !strcmp (argv[i], "-d")) 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; i += 2;
} }
...@@ -648,6 +652,7 @@ scan_c_file (char *filename, const char *mode) ...@@ -648,6 +652,7 @@ scan_c_file (char *filename, const char *mode)
if (defunflag && (commas == 1 || commas == 2)) if (defunflag && (commas == 1 || commas == 2))
{ {
int scanned = 0;
do do
c = getc (infile); c = getc (infile);
while (c == ' ' || c == '\n' || c == '\r' || c == '\t'); while (c == ' ' || c == '\n' || c == '\r' || c == '\t');
...@@ -655,12 +660,14 @@ scan_c_file (char *filename, const char *mode) ...@@ -655,12 +660,14 @@ scan_c_file (char *filename, const char *mode)
goto eof; goto eof;
ungetc (c, infile); ungetc (c, infile);
if (commas == 2) /* pick up minargs */ if (commas == 2) /* pick up minargs */
fscanf (infile, "%d", &minargs); scanned = fscanf (infile, "%d", &minargs);
else /* pick up maxargs */ else /* pick up maxargs */
if (c == 'M' || c == 'U') /* MANY || UNEVALLED */ if (c == 'M' || c == 'U') /* MANY || UNEVALLED */
maxargs = -1; maxargs = -1;
else else
fscanf (infile, "%d", &maxargs); scanned = fscanf (infile, "%d", &maxargs);
if (scanned < 0)
goto eof;
} }
} }
......
...@@ -488,7 +488,8 @@ main (int argc, char **argv) ...@@ -488,7 +488,8 @@ main (int argc, char **argv)
#ifdef MAIL_USE_SYSTEM_LOCK #ifdef MAIL_USE_SYSTEM_LOCK
if (! preserve_mail) if (! preserve_mail)
{ {
ftruncate (indesc, 0L); if (ftruncate (indesc, 0L) != 0)
pfatal_with_name (inname);
} }
#endif /* MAIL_USE_SYSTEM_LOCK */ #endif /* MAIL_USE_SYSTEM_LOCK */
......
2011-01-23 Paul Eggert <eggert@cs.ucla.edu> 2011-01-23 Paul Eggert <eggert@cs.ucla.edu>
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 * image.c (x_create_bitmap_from_xpm_data): Add cast to fix type clash
when calling XpmCreatePixmapFromData. when calling XpmCreatePixmapFromData.
...@@ -912,13 +912,12 @@ main (int argc, char **argv) ...@@ -912,13 +912,12 @@ main (int argc, char **argv)
emacs_close (0); emacs_close (0);
emacs_close (1); emacs_close (1);
result = emacs_open (term, O_RDWR, 0); result = emacs_open (term, O_RDWR, 0);
if (result < 0) if (result < 0 || dup (0) < 0)
{ {
char *errstring = strerror (errno); char *errstring = strerror (errno);
fprintf (stderr, "%s: %s: %s\n", argv[0], term, errstring); fprintf (stderr, "%s: %s: %s\n", argv[0], term, errstring);
exit (1); exit (1);
} }
dup (0);
if (! isatty (0)) if (! isatty (0))
{ {
fprintf (stderr, "%s: %s: not a tty\n", argv[0], term); fprintf (stderr, "%s: %s: not a tty\n", argv[0], term);
......
...@@ -23,6 +23,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ ...@@ -23,6 +23,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <stdio.h> #include <stdio.h>
#include <ctype.h> #include <ctype.h>
#include <errno.h>
#include <limits.h>
#include <setjmp.h> #include <setjmp.h>
#include "lisp.h" #include "lisp.h"
#include "character.h" #include "character.h"
...@@ -2149,10 +2151,13 @@ frame_name_fnn_p (char *str, EMACS_INT len) ...@@ -2149,10 +2151,13 @@ frame_name_fnn_p (char *str, EMACS_INT len)
if (len > 1 && str[0] == 'F') if (len > 1 && str[0] == 'F')
{ {
char *end_ptr; char *end_ptr;
long int n;
errno = 0;
n = strtol (str + 1, &end_ptr, 10);
strtol (str + 1, &end_ptr, 10); if (end_ptr == str + len
&& INT_MIN <= n && n <= INT_MAX
if (end_ptr == str + len) && ((LONG_MIN < n && n < LONG_MAX) || errno != ERANGE))
return 1; return 1;
} }
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment