Package: nbd-server
Version: 1:3.2-1.1
Severity: normal
Tags: patch

Dear Maintainer,

While working with nbd-server, I tried to allow the clients to
fetch a list of exports. After including the following in the
generic section of /etc/nbd-server/config:
        [generic]
                # other lines ...
                allowlist
nbd-server refused to start, complaining there were no configured
exports, even though there were:
        nass0:root ~ 17 # nbd-server -d 
        ** Message: No configured exports; quitting.

Obviously, the line should read 'allowlist = 1', but It would be
helpful if nbd-server detected the error, and complained about
that instead of (apparently) ignoring the rest of the config file,
and issuing the confusing complaint about no configured exports.

I also tried 'allowlist = yes'. In that case it gives a
descriptive message, although it still confusingly and incorrectly
complains that there are no exports:
        nass0:root ~ 14 # nbd-server -d 

        ** (process:3482): WARNING **: Could not parse config file: Could not 
parse allowlist in group 
generic: Key file contains key 'allowlist' which has a value that cannot be 
interpreted.
        ** Message: No configured exports; quitting.

The cause seems to be that g_key_file_load_from_file fails not only
if the file cannot be found or read, but also if it contains syntax
errors.

I am attaching a patch that fixes the problem: it reports the config file
error, and it no longer also complains that no exports were configured.
With the patch, nbd-server reports:
        nass0:root ~ 35 # /tmp/nbd-server -d 

        ** (process:3609): WARNING **: Could not parse config file: Key file 
contains line '    
allowlist' which is not a key-value pair, group, or comment

Kind regards,

Rogier.

Patch:
----------------------------------------------------------------------------------
--- nbd-3.2/nbd-server.c        2012-07-03 22:54:53.000000000 +0200
+++ nbd-3.2-patch/nbd-server.c  2013-01-24 19:19:04.000000000 +0100
@@ -899,8 +899,7 @@
        cfile = g_key_file_new();
        retval = g_array_new(FALSE, TRUE, sizeof(SERVER));
        if(!g_key_file_load_from_file(cfile, f, G_KEY_FILE_KEEP_COMMENTS |
-                       G_KEY_FILE_KEEP_TRANSLATIONS, &err)) {
-               g_set_error(e, errdomain, CFILE_NOTFOUND, "Could not open 
config file %s.", f);
+                       G_KEY_FILE_KEEP_TRANSLATIONS, e)) {
                g_key_file_free(cfile);
                return retval;
        }
@@ -2597,6 +2596,7 @@
        SERVER *serve;
        GArray *servers;
        GError *err=NULL;
+       bool error_reported=false;
 
        if (sizeof( struct nbd_request )!=28) {
                fprintf(stderr,"Bad size of structure. Alignment problems?\n");
@@ -2640,10 +2640,11 @@
        }
     
        if(!servers || !servers->len) {
-               if(err && !(err->domain == g_quark_from_string("parse_cfile")
-                               && err->code == CFILE_NOTFOUND)) {
+               if(err && !(err->domain == G_FILE_ERROR
+                               && err->code == G_FILE_ERROR_NOENT)) {
                        g_warning("Could not parse config file: %s", 
                                        err ? err->message : "Unknown error");
+                       error_reported=true;
                }
        }
        if(serve) {
@@ -2652,7 +2653,8 @@
        }
 
        if((!serve) && (!servers||!servers->len)) {
-               g_message("No configured exports; quitting.");
+               if (!error_reported)
+                       g_message("No configured exports; quitting.");
                exit(EXIT_FAILURE);
        }
        if (!dontfork)
----------------------------------------------------------------------------------

-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (x86_64)

Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages nbd-server depends on:
ii  adduser                3.113+nmu3
ii  debconf [debconf-2.0]  1.5.46
ii  libc6                  2.13-37
ii  libglib2.0-0           2.33.12+really2.32.4-3
ii  ucf                    3.0025+nmu3

nbd-server recommends no packages.

nbd-server suggests no packages.

-- debconf information excluded


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to