Fossil SCM

fix for cookie mismatch for self-registered users (reported via mailing list).

stephan 2012-03-31 17:13 trunk
Commit dc97099ac35b47f46d7e9f7486e0d2b204007242
1 file changed +1 -18
+1 -18
--- src/login.c
+++ src/login.c
@@ -1214,37 +1214,20 @@
12141214
@ %s(zUsername) already exists.
12151215
@ </span></p>
12161216
}else{
12171217
char *zPw = sha1_shared_secret(blob_str(&passwd), blob_str(&login), 0);
12181218
int uid;
1219
- char *zCookie;
1220
- const char *zCookieName;
1221
- const char *zExpire;
1222
- int expires;
1223
- const char *zIpAddr;
12241219
db_multi_exec(
12251220
"INSERT INTO user(login,pw,cap,info)"
12261221
"VALUES(%B,%Q,%B,%B)",
12271222
&login, zPw, &caps, &contact
12281223
);
12291224
free(zPw);
12301225
12311226
/* The user is registered, now just log him in. */
12321227
uid = db_int(0, "SELECT uid FROM user WHERE login=%Q", zUsername);
1233
- zCookieName = login_cookie_name();
1234
- zExpire = db_get("cookie-expire","8766");
1235
- expires = atoi(zExpire)*3600;
1236
- zIpAddr = PD("REMOTE_ADDR","nil");
1237
-
1238
- zCookie = db_text(0, "SELECT '%d/' || hex(randomblob(25))", uid);
1239
- cgi_set_cookie(zCookieName, zCookie, login_cookie_path(), expires);
1240
- record_login_attempt(zUsername, zIpAddr, 1);
1241
- db_multi_exec(
1242
- "UPDATE user SET cookie=%Q, ipaddr=%Q, "
1243
- " cexpire=julianday('now')+%d/86400.0 WHERE uid=%d",
1244
- zCookie, ipPrefix(zIpAddr), expires, uid
1245
- );
1228
+ login_set_user_cookie( zUsername, uid, NULL );
12461229
redirect_to_g();
12471230
12481231
}
12491232
}
12501233
}
12511234
--- src/login.c
+++ src/login.c
@@ -1214,37 +1214,20 @@
1214 @ %s(zUsername) already exists.
1215 @ </span></p>
1216 }else{
1217 char *zPw = sha1_shared_secret(blob_str(&passwd), blob_str(&login), 0);
1218 int uid;
1219 char *zCookie;
1220 const char *zCookieName;
1221 const char *zExpire;
1222 int expires;
1223 const char *zIpAddr;
1224 db_multi_exec(
1225 "INSERT INTO user(login,pw,cap,info)"
1226 "VALUES(%B,%Q,%B,%B)",
1227 &login, zPw, &caps, &contact
1228 );
1229 free(zPw);
1230
1231 /* The user is registered, now just log him in. */
1232 uid = db_int(0, "SELECT uid FROM user WHERE login=%Q", zUsername);
1233 zCookieName = login_cookie_name();
1234 zExpire = db_get("cookie-expire","8766");
1235 expires = atoi(zExpire)*3600;
1236 zIpAddr = PD("REMOTE_ADDR","nil");
1237
1238 zCookie = db_text(0, "SELECT '%d/' || hex(randomblob(25))", uid);
1239 cgi_set_cookie(zCookieName, zCookie, login_cookie_path(), expires);
1240 record_login_attempt(zUsername, zIpAddr, 1);
1241 db_multi_exec(
1242 "UPDATE user SET cookie=%Q, ipaddr=%Q, "
1243 " cexpire=julianday('now')+%d/86400.0 WHERE uid=%d",
1244 zCookie, ipPrefix(zIpAddr), expires, uid
1245 );
1246 redirect_to_g();
1247
1248 }
1249 }
1250 }
1251
--- src/login.c
+++ src/login.c
@@ -1214,37 +1214,20 @@
1214 @ %s(zUsername) already exists.
1215 @ </span></p>
1216 }else{
1217 char *zPw = sha1_shared_secret(blob_str(&passwd), blob_str(&login), 0);
1218 int uid;
 
 
 
 
 
1219 db_multi_exec(
1220 "INSERT INTO user(login,pw,cap,info)"
1221 "VALUES(%B,%Q,%B,%B)",
1222 &login, zPw, &caps, &contact
1223 );
1224 free(zPw);
1225
1226 /* The user is registered, now just log him in. */
1227 uid = db_int(0, "SELECT uid FROM user WHERE login=%Q", zUsername);
1228 login_set_user_cookie( zUsername, uid, NULL );
 
 
 
 
 
 
 
 
 
 
 
 
1229 redirect_to_g();
1230
1231 }
1232 }
1233 }
1234

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button