summaryrefslogtreecommitdiff
path: root/server/server.c
diff options
context:
space:
mode:
authorGravatar John Kohl <jtkohl@mit.edu>1989-10-17 12:05:08 +0000
committerGravatar John Kohl <jtkohl@mit.edu>1989-10-17 12:05:08 +0000
commit25f9db1975da3a14f16f103dcb61cd41374d2e7a (patch)
tree9ead09215d64107f03d8cb12013c662103b39f73 /server/server.c
parent3cf8e16bd5bf37473b941189ea3483128abcd841 (diff)
add MIPS on server type
fix up null-pointer and overflow and free problems
Diffstat (limited to 'server/server.c')
-rw-r--r--server/server.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/server/server.c b/server/server.c
index 59b8d2f..c7a366d 100644
--- a/server/server.c
+++ b/server/server.c
@@ -918,6 +918,9 @@ struct sockaddr_in *who;
#ifdef sun
(void) strcat(buf, "SUN");
#endif sun
+#ifdef mips
+ (void) strcat(buf, "MIPS");
+#endif mips
vers = strsave(buf);
(void) sprintf(buf, "%d pkts", npackets);
@@ -1035,8 +1038,9 @@ char *file;
if (newline = index(buf, '\n'))
*newline = '\0';
- if (nused >= nhosts) {
+ if (nused+1 >= nhosts) {
/* get more pointer space if necessary */
+ /* +1 to leave room for null pointer */
ret_list = (char **)realloc((char *)ret_list,
(unsigned) nhosts * 2);
nhosts = nhosts * 2;
@@ -1044,6 +1048,7 @@ char *file;
ret_list[nused++] = strsave(buf);
}
(void) fclose(fp);
+ ret_list[nused] = (char *)0;
return(ret_list);
}
@@ -1052,14 +1057,14 @@ char *file;
*/
static void
free_server_list(list)
-char **list;
+register char **list;
{
register int i;
if (!nhosts) /* nothing allocated */
return;
- for (i = 0; i < nhosts; i++)
- xfree(list[i]);
+ for (; *list; list++)
+ xfree(*list);
xfree(list);
return;
}