... | ... |
@@ -156,7 +156,6 @@ callback_http(wk *web, int connid, wk_uri *uri, void *userptr) |
156 | 156 |
log_write("HTTP","Request: /newuser?..."); |
157 | 157 |
else |
158 | 158 |
log_write("HTTP","Request: %s",uri->path); |
159 |
- |
|
160 | 159 |
/* extract the name */ |
161 | 160 |
strncpy(partialpath,uri->path,sizeof(partialpath)-1); |
162 | 161 |
partialpath[sizeof(partialpath)-1]='\0'; |
... | ... |
@@ -188,7 +187,7 @@ callback_http(wk *web, int connid, wk_uri *uri, void *userptr) |
188 | 187 |
return(wkact_finished); |
189 | 188 |
} else if((res=res_find(resindexdata,"index.html"))!=NULL) { |
190 | 189 |
log_write("HTTP","Not allowed page, redirecting to login"); |
191 |
- wk_serve_buffer_as_file(web,connid,res->data,res->len,mime_getdefault(res->name,"application/octet-stream")); |
|
190 |
+ wk_serve_redirect(web,connid,"/"); |
|
192 | 191 |
return(wkact_finished); |
193 | 192 |
} else { |
194 | 193 |
log_write("EINT","%s:%i",__FILE__,__LINE__); |
... | ... |
@@ -287,8 +286,8 @@ http_newuser(wk *web, int connid, wk_uri *uri, void *userptr) |
287 | 286 |
/* check validity */ |
288 | 287 |
if(kakumei_inviteexists(ka,i)!=0) { |
289 | 288 |
/* retry login */ |
290 |
- wk_serve_buffer_as_file(web,connid,"/",1,"text/plain"); |
|
291 | 289 |
log_write("NEWU","invalid invite %s, redirecting to login",i); |
290 |
+ wk_serve_buffer_as_file(web,connid,"/",1,"text/plain"); |
|
292 | 291 |
return(wkact_finished); |
293 | 292 |
} |
294 | 293 |
/* create user */ |
... | ... |
@@ -303,8 +302,8 @@ http_newuser(wk *web, int connid, wk_uri *uri, void *userptr) |
303 | 302 |
/* create session and go to "posts" page */ |
304 | 303 |
if(session_new(ka,u,session,sizeof(session))==NULL) { |
305 | 304 |
/* "autologin" didn't work, ask for login */ |
306 |
- wk_serve_buffer_as_file(web,connid,"/",1,"text/plain"); |
|
307 | 305 |
log_write("NEWU","couldn't generate new session, redirecting to login"); |
306 |
+ wk_serve_buffer_as_file(web,connid,"/",1,"text/plain"); |
|
308 | 307 |
return(wkact_finished); |
309 | 308 |
} |
310 | 309 |
/* valid login */ |
... | ... |
@@ -13,6 +13,7 @@ |
13 | 13 |
#include <fcntl.h> |
14 | 14 |
#include <time.h> |
15 | 15 |
#include <mhash.h> |
16 |
+#include "loglib.h" |
|
16 | 17 |
#include "kakumei.h" |
17 | 18 |
#include "kakumei_session.h" |
18 | 19 |
|
... | ... |
@@ -49,7 +50,7 @@ session_new(kakumei *ka, char *user, char *session, int sessionsize) |
49 | 50 |
mhash(td,&n,sizeof(n)); |
50 | 51 |
} |
51 | 52 |
mhash_deinit(td,&binhash); |
52 |
- for(i=0;i<sizeof(binhash);i++) { |
|
53 |
+ for(i=0;i<sizeof(binhash) && i<SESSIONSIZE;i++) { |
|
53 | 54 |
c=(((unsigned char *)binhash)[i]>>4); |
54 | 55 |
c=(c>=10)?(c-10+'a'):c+'0'; |
55 | 56 |
session[i<<1]=c; |
... | ... |
@@ -57,7 +58,7 @@ session_new(kakumei *ka, char *user, char *session, int sessionsize) |
57 | 58 |
c=(c>=10)?(c-10+'a'):c+'0'; |
58 | 59 |
session[(i<<1)+1]=c; |
59 | 60 |
} |
60 |
- session[sizeof(binhash)]='\0'; |
|
61 |
+ session[SESSIONSIZE-1]='\0'; |
|
61 | 62 |
/* save the hash */ |
62 | 63 |
mkdir(DATADIR,0700); |
63 | 64 |
mkdir(SESSIONSDIR,0700); |
... | ... |
@@ -100,7 +101,7 @@ session_check(kakumei *ka, char *session, char *user, int usersize) |
100 | 101 |
if(ka==NULL || session==NULL || session[0]=='\0' || user==NULL || usersize<(MAXUSERSIZE+1)) |
101 | 102 |
return(NULL); |
102 | 103 |
for(i=0;session[i]!='\0';i++) { |
103 |
- if(!(session[i]>='0' && session[i]<='0') && |
|
104 |
+ if(!(session[i]>='0' && session[i]<='9') && |
|
104 | 105 |
!(session[i]>='a' && session[i]<='f')) { |
105 | 106 |
return(NULL); |
106 | 107 |
} |
... | ... |
@@ -125,7 +126,7 @@ session_del(kakumei *ka, char *session) |
125 | 126 |
if(ka==NULL || session==NULL || session[0]=='\0') |
126 | 127 |
return(-1); |
127 | 128 |
for(i=0;session[i]!='\0';i++) { |
128 |
- if(!(session[i]>='0' && session[i]<='0') && |
|
129 |
+ if(!(session[i]>='0' && session[i]<='9') && |
|
129 | 130 |
!(session[i]>='a' && session[i]<='f')) { |
130 | 131 |
return(-1); |
131 | 132 |
} |