dav/config.c

changeset 147
458a8dc68048
parent 142
0c0ccb7f71ba
child 150
37fb12574acd
--- a/dav/config.c	Sat Oct 03 16:44:50 2015 +0200
+++ b/dav/config.c	Sat Oct 03 18:11:07 2015 +0200
@@ -321,6 +321,8 @@
                     key->type = KEY_AES128;
                 } else if(!strcmp(value, "aes256")) {
                     key->type = KEY_AES256;
+                } else if(!strcmp(value, "password")) {
+                    key->type = KEY_PASSWORD;
                 }
             }
                 
@@ -331,20 +333,41 @@
     if(key->name) {
         if(key->type == KEY_AES128) {
             if(key->length < 16) {
+                fprintf(
+                        stderr,
+                        "Error: Key %s is too small (%d < 16)\n",
+                        key->name,
+                        key->length);
                 return;
             }
             key->length = 16;
         }
         if(key->type == KEY_AES256) {
             if(key->length < 32) {
+                fprintf(
+                        stderr,
+                        "Error: Key %s is too small (%d < 32)\n",
+                        key->name,
+                        key->length);
                 return;
             }
             key->length = 32;
         }
+        if(key->type == KEY_PASSWORD) {
+            key->length = 0;
+            if(key->data) {
+                // make sure the pw-key is not loaded from a file
+                free(key->data);
+                key->data = NULL;
+            }
+        }
         ucx_map_cstr_put(keys, key->name, key);
         dav_context_add_key(context, key);
     } else {
-        // TODO: free
+        if(key->data) {
+            free(key->data);
+            free(key);
+        }
     }
 }
 

mercurial