[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lib-src/pop.c,v
From: |
Chong Yidong |
Subject: |
[Emacs-diffs] Changes to emacs/lib-src/pop.c,v |
Date: |
Thu, 10 Jan 2008 15:33:52 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Chong Yidong <cyd> 08/01/10 15:33:52
Index: pop.c
===================================================================
RCS file: /sources/emacs/emacs/lib-src/pop.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -b -r1.45 -r1.46
--- pop.c 8 Jan 2008 20:46:23 -0000 1.45
+++ pop.c 10 Jan 2008 15:33:52 -0000 1.46
@@ -352,6 +352,7 @@
int *size;
{
char *fromserver;
+ char *end_ptr;
if (server->in_multi)
{
@@ -377,7 +378,15 @@
return (-1);
}
- *count = atoi (&fromserver[4]);
+ errno = 0;
+ *count = strtol (&fromserver[4], &end_ptr, 10);
+ /* Check validity of string-to-integer conversion. */
+ if (fromserver[4] == 0 || *end_ptr != 0 || errno)
+ {
+ strcpy (pop_error, "Unexpected response from POP server in pop_stat");
+ pop_trash (server);
+ return (-1);
+ }
fromserver = index (&fromserver[4], ' ');
if (! fromserver)
@@ -388,7 +397,14 @@
return (-1);
}
- *size = atoi (fromserver + 1);
+ errno = 0;
+ *size = strtol (fromserver + 1, &end_ptr, 10);
+ if (*(fromserver + 1) == 0 || *end_ptr != 0 || errno)
+ {
+ strcpy (pop_error, "Unexpected response from POP server in pop_stat");
+ pop_trash (server);
+ return (-1);
+ }
return (0);
}
@@ -913,7 +929,17 @@
}
else
{
- return (atoi (&fromserver[4]));
+ char *end_ptr;
+ int count;
+ errno = 0;
+ count = strtol (&fromserver[4], &end_ptr, 10);
+ if (fromserver[4] == 0 || *end_ptr != 0 || errno)
+ {
+ strcpy (pop_error, "Unexpected response from server in pop_last");
+ pop_trash (server);
+ return (-1);
+ }
+ return count;
}
}