masqmail

changeset 18:99c09ed776c1

fixed empty or only-whitespace connection names (Closes Debian bug #427095) stripping leading and trailing whitespace from connection names
author meillo@marmaro.de
date Thu, 06 Nov 2008 10:13:29 +0100
parents 6c59dedd06be
children 7354c2e0eb31
files src/online.c
diffstat 1 files changed, 20 insertions(+), 4 deletions(-) [+]
line diff
     1.1 --- a/src/online.c	Thu Nov 06 09:41:35 2008 +0100
     1.2 +++ b/src/online.c	Thu Nov 06 10:13:29 2008 +0100
     1.3 @@ -46,8 +46,16 @@
     1.4  	if (in != NULL) {
     1.5  		gchar output[256];
     1.6  		if (fgets(output, 255, in)) {
     1.7 -			g_strchomp(output);
     1.8 -			name = g_strdup(output);
     1.9 +			g_strchomp(g_strchug(output));
    1.10 +			if (strlen(output) == 0) {
    1.11 +				logwrite(LOG_ALERT, "only whitespace connection name\n");
    1.12 +				name = NULL;
    1.13 +			} else {
    1.14 +				name = g_strdup(output);
    1.15 +			}
    1.16 +		} else {
    1.17 +			logwrite(LOG_ALERT, "nothing read from pipe %s\n", pipe);
    1.18 +			name = NULL;
    1.19  		}
    1.20  		fclose(in);
    1.21  		waitpid(pid, &status, 0);
    1.22 @@ -75,9 +83,17 @@
    1.23  					FILE *fptr = fopen(conf.online_file, "r");
    1.24  					if (fptr) {
    1.25  						char buf[256];
    1.26 -						fgets(buf, 256, fptr);
    1.27 -						g_strchomp(buf);
    1.28 +						if (fgets(buf, 256, fptr) == NULL) {
    1.29 +							logwrite(LOG_ALERT, "empty online file %s\n", conf.online_file);
    1.30 +							fclose(fptr);
    1.31 +							return NULL;
    1.32 +						}
    1.33 +						g_strchomp(g_strchug(buf));
    1.34  						fclose(fptr);
    1.35 +						if (strlen(buf) == 0) {
    1.36 +							logwrite(LOG_ALERT, "only whitespace connection name in %s\n", conf.online_file);
    1.37 +							return NULL;
    1.38 +						}
    1.39  						return g_strdup(buf);
    1.40  					} else {
    1.41  						logwrite(LOG_ALERT, "opening of %s failed: %s\n", conf.online_file, strerror(errno));