diff --git a/lib-src/pop.c b/lib-src/pop.c index 9f5b5476f50..725a9d87cd0 100644 --- a/lib-src/pop.c +++ b/lib-src/pop.c @@ -26,10 +26,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #ifdef sun #include -#else -extern char *malloc (/* unsigned */); -extern char *realloc (/* char *, unsigned */); -extern void free (/* char * */); #endif #endif #ifdef HESIOD @@ -43,15 +39,13 @@ extern void free (/* char * */); extern struct servent *hes_getservbyname (/* char *, char * */); #endif #include -#include -#include #include #include #include #ifdef KERBEROS #ifndef KRB5 -#include #include +#include #else /* KRB5 */ #include #include @@ -85,6 +79,8 @@ static int gettermination (/* popserver */); #endif static void pop_trash (/* popserver */); +static char *my_strstr (); + #define ERROR_MAX 80 /* a pretty arbitrary size */ #define POP_PORT 110 #define KPOP_PORT 1109 @@ -1171,7 +1167,7 @@ getline (server) if (server->data) { - char *cp = strstr (server->buffer + server->buffer_index, "\r\n"); + char *cp = my_strstr (server->buffer + server->buffer_index, "\r\n"); if (cp) { int found; @@ -1214,7 +1210,7 @@ getline (server) } } ret = read (server->file, server->buffer + server->data, - server->buffer_size - server->data); + server->buffer_size - server->data - 1); if (ret < 0) { strcpy (pop_error, GETLINE_ERROR); @@ -1231,9 +1227,11 @@ getline (server) } else { - char *cp = strstr (server->buffer, "\r\n"); + char *cp; server->data += ret; + server->buffer[server->data] = '\0'; + cp = my_strstr (server->buffer, "\r\n"); if (cp) { int data_used = (cp + 2) - server->buffer;