diff options
author | John Kohl <jtkohl@mit.edu> | 1989-10-17 12:05:08 +0000 |
---|---|---|
committer | John Kohl <jtkohl@mit.edu> | 1989-10-17 12:05:08 +0000 |
commit | 25f9db1975da3a14f16f103dcb61cd41374d2e7a (patch) | |
tree | 9ead09215d64107f03d8cb12013c662103b39f73 /server/server.c | |
parent | 3cf8e16bd5bf37473b941189ea3483128abcd841 (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.c | 13 |
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; } |