Better account/login handling
authorChristian Thaeter <ct@pipapo.org>
Wed, 13 Feb 2008 05:58:31 +0000 (06:58 +0100)
committerChristian Thaeter <ct@pipapo.org>
Wed, 13 Feb 2008 05:58:31 +0000 (06:58 +0100)
set a query->account_validated flag when the user send an valid
authentication cookie.

make signature handling more defensive.

src/account.c
src/login.c
src/query.c
src/webgit.h

index e5f3fc4..ca4fcf7 100644 (file)
@@ -132,6 +132,9 @@ webgit_account_email_validate (const char* email)
 const char*
 webgit_account_signature (struct webgit_query* query)
 {
+  if (!(query->user && query->name && query->email))
+    return NULL;
+
   size_t buf_len =
     strlen (query->user) + strlen (query->name) + strlen (query->email) + 40 /*secret*/ + sizeof ("; ; ; ");
 
@@ -149,6 +152,9 @@ int
 webgit_account_validate_signature (struct webgit_query* query)
 {
   const char* sig = webgit_account_signature (query);
+  if (!sig || !query->ssign)
+    return 0;
+
   return !strcmp (sig, query->ssign);
 }
 
index d071d8a..91da87f 100644 (file)
@@ -31,6 +31,7 @@ webgit_login_bakecookie (struct webgit_query* query)
     {
       if (webgit_account_validate_signature (query))
         {
+          query->account_validated = 1;
           if (query->cookie_expire)
             {
               // if pending then activate
index dd54503..f5a3100 100644 (file)
@@ -46,6 +46,7 @@ webgit_query_init (struct webgit_query* q)
   q->secret = NULL;
   q->accountdir = NULL;
   q->maxage = 1000000000;
+  q->account_validated = 0;
 
   q->repo = NULL;
   q->action = NULL;
index 562c05b..4d38fdb 100644 (file)
@@ -52,7 +52,7 @@ struct webgit_query
   Cgi request;
   time_t now;
 
-  int deref_to_tree;
+  int account_validated;
 
   char* content_type;