2009-11-27 14:54:42 +01:00
|
|
|
diff -ur sysklogd-1.4.1.orig/syslogd.c sysklogd-1.4.1/syslogd.c
|
|
|
|
--- sysklogd-1.4.1.orig/syslogd.c Sun Mar 11 19:40:10 2001
|
|
|
|
+++ sysklogd-1.4.1/syslogd.c Sun Apr 18 01:42:21 2004
|
|
|
|
@@ -1254,30 +1254,26 @@
|
2006-12-19 00:17:53 +01:00
|
|
|
crunch_list(list)
|
|
|
|
char *list;
|
|
|
|
{
|
|
|
|
- int count, i;
|
|
|
|
+ int i, m, n;
|
|
|
|
char *p, *q;
|
|
|
|
char **result = NULL;
|
|
|
|
|
|
|
|
p = list;
|
|
|
|
|
|
|
|
/* strip off trailing delimiters */
|
|
|
|
- while (p[strlen(p)-1] == LIST_DELIMITER) {
|
|
|
|
- count--;
|
|
|
|
+ while (*p && p[strlen(p)-1] == LIST_DELIMITER)
|
|
|
|
p[strlen(p)-1] = '\0';
|
|
|
|
- }
|
|
|
|
/* cut off leading delimiters */
|
|
|
|
- while (p[0] == LIST_DELIMITER) {
|
|
|
|
- count--;
|
|
|
|
+ while (p[0] == LIST_DELIMITER)
|
|
|
|
p++;
|
|
|
|
- }
|
|
|
|
|
|
|
|
- /* count delimiters to calculate elements */
|
|
|
|
- for (count=i=0; p[i]; i++)
|
|
|
|
- if (p[i] == LIST_DELIMITER) count++;
|
|
|
|
+ /* count delimiters to calculate the number of elements */
|
|
|
|
+ for (n = i = 0; p[i]; i++)
|
|
|
|
+ if (p[i] == LIST_DELIMITER) n++;
|
|
|
|
|
|
|
|
- if ((result = (char **)malloc(sizeof(char *) * count+2)) == NULL) {
|
|
|
|
+ if ((result = (char **)malloc(sizeof(char *) * (n + 2))) == NULL) {
|
|
|
|
printf ("Sorry, can't get enough memory, exiting.\n");
|
|
|
|
- exit(0);
|
|
|
|
+ exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
2009-11-27 14:54:42 +01:00
|
|
|
@@ -1285,30 +1281,28 @@
|
2006-12-19 00:17:53 +01:00
|
|
|
* characters are different from any delimiters,
|
|
|
|
* so we don't have to care about this.
|
|
|
|
*/
|
|
|
|
- count = 0;
|
|
|
|
- while ((q=strchr(p, LIST_DELIMITER))) {
|
|
|
|
- result[count] = (char *) malloc((q - p + 1) * sizeof(char));
|
|
|
|
- if (result[count] == NULL) {
|
|
|
|
+ m = 0;
|
|
|
|
+ while ((q = strchr(p, LIST_DELIMITER)) && m < n) {
|
|
|
|
+ result[m] = (char *) malloc((q - p + 1) * sizeof(char));
|
|
|
|
+ if (result[m] == NULL) {
|
|
|
|
printf ("Sorry, can't get enough memory, exiting.\n");
|
|
|
|
- exit(0);
|
|
|
|
+ exit(1);
|
|
|
|
}
|
|
|
|
- strncpy(result[count], p, q - p);
|
|
|
|
- result[count][q - p] = '\0';
|
|
|
|
+ memcpy(result[m], p, q - p);
|
|
|
|
+ result[m][q - p] = '\0';
|
|
|
|
p = q; p++;
|
|
|
|
- count++;
|
|
|
|
+ m++;
|
|
|
|
}
|
|
|
|
- if ((result[count] = \
|
|
|
|
- (char *)malloc(sizeof(char) * strlen(p) + 1)) == NULL) {
|
|
|
|
+ if ((result[m] = strdup(p)) == NULL) {
|
|
|
|
printf ("Sorry, can't get enough memory, exiting.\n");
|
|
|
|
- exit(0);
|
|
|
|
+ exit(1);
|
|
|
|
}
|
|
|
|
- strcpy(result[count],p);
|
|
|
|
- result[++count] = NULL;
|
|
|
|
+ result[++m] = NULL;
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
- count=0;
|
|
|
|
- while (result[count])
|
|
|
|
- dprintf ("#%d: %s\n", count, StripDomains[count++]);
|
|
|
|
+ m = 0;
|
|
|
|
+ while (result[m])
|
|
|
|
+ dprintf ("#%d: %s\n", m, result[m++]);
|
|
|
|
#endif
|
|
|
|
return result;
|
|
|
|
}
|