Fix memleak: free peer->di.
[doldaconnect.git] / lib / uimisc.c
index 9cef69f..73684d3 100644 (file)
@@ -190,7 +190,7 @@ static void process_pam(struct dc_response *resp, struct logindata *data)
                data->callback(DC_LOGIN_ERR_CONV, NULL, data->data);
                freelogindata(data);
            } else {
-               dc_queuecmd(logincallback, data, L"pass", L"%%s", buf, NULL);
+               dc_queuecmd(logincallback, data, L"pass", L"%s", buf, NULL);
            }
            if(buf != NULL)
            {
@@ -249,7 +249,7 @@ static void process_krb5(struct dc_response *resp, struct logindata *data)
        {
        case 0:
            buf = hexencode(krb->reqbuf.data, krb->reqbuf.length);
-           dc_queuecmd(logincallback, data, L"pass", L"%%s", buf, NULL);
+           dc_queuecmd(logincallback, data, L"pass", L"%s", buf, NULL);
            free(buf);
            krb->state = 1;
            break;
@@ -414,6 +414,12 @@ static struct authmech authmechs[] =
     },
 #endif
     {
+       .name = L"unix",
+       .process = process_authless,
+       .init = NULL,
+       .release = NULL
+    },
+    {
        .name = L"authless",
        .process = process_authless,
        .init = NULL,
@@ -516,7 +522,7 @@ static int logincallback(struct dc_response *resp)
                    }
                    username = pwent->pw_name;
                }
-               dc_queuecmd(logincallback, data, L"login", data->mech->name, L"%%s", username, NULL);
+               dc_queuecmd(logincallback, data, L"login", data->mech->name, L"%s", username, NULL);
            }
        }
     } else if(!wcscmp(resp->cmdname, L"login") || !wcscmp(resp->cmdname, L"pass")) {
@@ -690,6 +696,7 @@ static void delpeer(struct dc_fnetpeer *peer)
            free(peer->di[i].d.str);
        putdatum(peer->fn, peer->di[i].datum);
     }
+    free(peer->di);
     free(peer);
 }
 
@@ -1065,9 +1072,9 @@ static int getpalistcallback(struct dc_response *resp)
            adddatum(fn, ires->argv[0].val.str, ires->argv[1].val.num);
            dc_freeires(ires);
        }
-       dc_queuecmd(getpeerlistcallback, data, L"lspeers", L"%%i", fn->id, NULL);
+       dc_queuecmd(getpeerlistcallback, data, L"lspeers", L"%i", fn->id, NULL);
     } else if(resp->code == 201) {
-       dc_queuecmd(getpeerlistcallback, data, L"lspeers", L"%%i", fn->id, NULL);
+       dc_queuecmd(getpeerlistcallback, data, L"lspeers", L"%i", fn->id, NULL);
     } else {
        data->callback(fn, resp->code, data->data);
        free(data);
@@ -1103,7 +1110,7 @@ void dc_getpeerlistasync(struct dc_fnetnode *fn, void (*callback)(struct dc_fnet
     data->callback = callback;
     data->fnid = fn->id;
     data->data = udata;
-    dc_queuecmd(getpalistcallback, data, L"lspa", L"%%i", fn->id, NULL);
+    dc_queuecmd(getpalistcallback, data, L"lspa", L"%i", fn->id, NULL);
 }
 
 void dc_uimisc_disconnected(void)