Module Name: src Committed By: christos Date: Thu Dec 30 21:26:00 UTC 2010
Modified Files: src/usr.sbin/ldpd: conffile.c Log Message: - detect calloc failure - int -> size_t - cache strlen - proper cast for ctype macro To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/usr.sbin/ldpd/conffile.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/ldpd/conffile.c diff -u src/usr.sbin/ldpd/conffile.c:1.1 src/usr.sbin/ldpd/conffile.c:1.2 --- src/usr.sbin/ldpd/conffile.c:1.1 Thu Dec 30 06:29:21 2010 +++ src/usr.sbin/ldpd/conffile.c Thu Dec 30 16:26:00 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: conffile.c,v 1.1 2010/12/30 11:29:21 kefren Exp $ */ +/* $NetBSD: conffile.c,v 1.2 2010/12/30 21:26:00 christos Exp $ */ /* * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -50,7 +50,7 @@ struct in_addr conf_ldp_id; static int conf_dispatch(char*); -static int conf_readline(char*, int); +static int conf_readline(char*, size_t); static int checkeol(char*); static int Fhellotime(char*); static int Fport(char*); @@ -111,9 +111,9 @@ * Reads a line from config file */ int -conf_readline(char *buf, int bufsize) +conf_readline(char *buf, size_t bufsize) { - int i; + size_t i; for (i = 0; i < bufsize; i++) { if (read(confh, &buf[i], 1) != 1) { @@ -123,7 +123,7 @@ } if (buf[i] == '\n') break; - if (i == 0 && isspace((int)buf[i]) != 0) { + if (i == 0 && isspace((unsigned char)buf[i]) != 0) { i--; continue; } @@ -170,11 +170,12 @@ int checkeol(char *line) { - if (line[strlen(line) - 1] == ';') { - line[strlen(line) - 1] = '\0'; + size_t len = strlen(line); + if (len > 0 && line[len - 1] == ';') { + line[len - 1] = '\0'; return 0; } - for (uint i = 0; i < strlen(line); i++) + for (size_t i = 0; i < len; i++) if (line[i] == '{') return 0; return -1; @@ -273,10 +274,12 @@ return E_CONF_PARAM; nei = calloc(1, sizeof(*nei)); + if (nei == NULL) + return E_CONF_MEM; nei->address.s_addr = ad.s_addr; SLIST_INSERT_HEAD(&conei_head, nei, neilist); - while(conf_readline(buf, sizeof(buf)) >= 0) { + while (conf_readline(buf, sizeof(buf)) >= 0) { if (buf[0] == '}') return 0; if (Gneighbour(nei, buf) == -1)