Handle zero-length legacy netconfig files correctly (just delete them)
[citadel.git] / citadel / netconfig.c
index 1f68fe3ba0af8faa04d51fde5303f11987bde1d8..d87d522cbfe56e0e9608f4a575c90be1ac2694b3 100644 (file)
@@ -605,6 +605,7 @@ int CtdlNetconfigCheckRoomaccess(
                return (ERROR + NO_SUCH_USER);
        }
        found = is_recipient (RNCfg, RemoteIdentifier);
+       FreeRoomNetworkStruct(&RNCfg);
        end_critical_section(S_NETCONFIGS);
 
        if (found) {
@@ -930,14 +931,19 @@ void convert_legacy_netcfg_files(void)
                        if (fp) {
                                fseek(fp, 0L, SEEK_END);
                                len = ftell(fp);
-                               v = malloc(len);
-                               if (v) {
-                                       rewind(fp);
-                                       if (fread(v, len, 1, fp)) {
-                                               write_netconfig_to_configdb(roomnum, v);
-                                               unlink(filename);
+                               if (len > 0) {
+                                       v = malloc(len);
+                                       if (v) {
+                                               rewind(fp);
+                                               if (fread(v, len, 1, fp)) {
+                                                       write_netconfig_to_configdb(roomnum, v);
+                                                       unlink(filename);
+                                               }
+                                               free(v);
                                        }
-                                       free(v);
+                               }
+                               else {
+                                       unlink(filename);       // zero length netconfig, just delete it
                                }
                                fclose(fp);
                        }