]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Don't leak FD's on empty values.
authorAlan T. DeKok <aland@freeradius.org>
Wed, 15 Apr 2009 17:49:31 +0000 (19:49 +0200)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 15 Apr 2009 17:49:31 +0000 (19:49 +0200)
Patch from Stephan Jaeger

src/modules/rlm_linelog/rlm_linelog.c

index 0dc1486bb2622d7fca26531da7cac05e31505bbc..eecde9e44ae519041799fcaf718de97be4476b12 100755 (executable)
@@ -195,21 +195,6 @@ static int do_linelog(void *instance, REQUEST *request)
        rlm_linelog_t *inst = (rlm_linelog_t*) instance;
        const char *value = inst->line;
 
-       /*
-        *      FIXME: Check length.
-        */
-       if (strcmp(inst->filename, "syslog") != 0) {
-               radius_xlat(buffer, sizeof(buffer), inst->filename, request,
-                           NULL);
-               
-               fd = open(buffer, O_WRONLY | O_APPEND | O_CREAT, 0600);
-               if (fd == -1) {
-                       radlog(L_ERR, "rlm_linelog: Failed to open %s: %s",
-                              buffer, strerror(errno));
-                       return RLM_MODULE_FAIL;
-               }
-       }
-
        if (inst->reference) {
                CONF_ITEM *ci;
                CONF_PAIR *cp;
@@ -248,6 +233,21 @@ static int do_linelog(void *instance, REQUEST *request)
        }
 
  do_log:
+       /*
+        *      FIXME: Check length.
+        */
+       if (strcmp(inst->filename, "syslog") != 0) {
+               radius_xlat(buffer, sizeof(buffer), inst->filename, request,
+                           NULL);
+               
+               fd = open(buffer, O_WRONLY | O_APPEND | O_CREAT, 0600);
+               if (fd == -1) {
+                       radlog(L_ERR, "rlm_linelog: Failed to open %s: %s",
+                              buffer, strerror(errno));
+                       return RLM_MODULE_FAIL;
+               }
+       }
+
        /*
         *      FIXME: Check length.
         */