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)

Reply via email to