Check return values of some library calls.
This commit is contained in:
parent
f77fabaf6b
commit
9055082ef8
7 changed files with 40 additions and 11 deletions
|
@ -1,3 +1,11 @@
|
|||
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>
|
||||
|
||||
Include <unistd.h> unilaterally.
|
||||
|
|
|
@ -179,7 +179,9 @@ main (int argc, char **argv)
|
|||
|
||||
#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 @@ main (int argc, char **argv)
|
|||
if (i < 16)
|
||||
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)
|
|||
}
|
||||
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 @@ scan_c_file (char *filename, const char *mode)
|
|||
|
||||
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 @@ scan_c_file (char *filename, const char *mode)
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -488,7 +488,8 @@ main (int argc, char **argv)
|
|||
#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 */
|
||||
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
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
|
||||
when calling XpmCreatePixmapFromData.
|
||||
|
||||
|
|
|
@ -912,13 +912,12 @@ main (int argc, char **argv)
|
|||
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);
|
||||
|
|
11
src/frame.c
11
src/frame.c
|
@ -23,6 +23,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
|
||||
#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 @@ frame_name_fnn_p (char *str, EMACS_INT len)
|
|||
if (len > 1 && str[0] == 'F')
|
||||
{
|
||||
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)
|
||||
if (end_ptr == str + len
|
||||
&& INT_MIN <= n && n <= INT_MAX
|
||||
&& ((LONG_MIN < n && n < LONG_MAX) || errno != ERANGE))
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue