summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2016-03-21 16:23:49 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2016-03-21 16:23:49 -0400
commit4ce1ab8a2632c1676235b51b00f4469e96966c7c (patch)
tree47c38977ed22645e516126b2a5d33e8e44f993a9
parentMerge pull request #525 from mikkeloscar/fix-clang-warning (diff)
parentswaylock: Grow the password buffer (diff)
downloadsway-4ce1ab8a2632c1676235b51b00f4469e96966c7c.tar.gz
sway-4ce1ab8a2632c1676235b51b00f4469e96966c7c.tar.zst
sway-4ce1ab8a2632c1676235b51b00f4469e96966c7c.zip
Merge pull request #527 from gkbrk/swaylock_password_grow
swaylock: Grow the password buffer
-rw-r--r--swaylock/main.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/swaylock/main.c b/swaylock/main.c
index b20883af..f2015a05 100644
--- a/swaylock/main.c
+++ b/swaylock/main.c
@@ -36,6 +36,7 @@ void sway_terminate(int exit_code) {
36} 36}
37 37
38char *password; 38char *password;
39int password_size;
39 40
40int function_conversation(int num_msg, const struct pam_message **msg, 41int function_conversation(int num_msg, const struct pam_message **msg,
41 struct pam_response **resp, void *appdata_ptr) { 42 struct pam_response **resp, void *appdata_ptr) {
@@ -101,12 +102,17 @@ void notify_key(enum wl_keyboard_key_state state, xkb_keysym_t sym, uint32_t cod
101 if (verify_password()) { 102 if (verify_password()) {
102 exit(0); 103 exit(0);
103 } 104 }
104 password = malloc(1024); // TODO: Let this grow 105 password_size = 1024;
106 password = malloc(password_size);
105 password[0] = '\0'; 107 password[0] = '\0';
106 break; 108 break;
107 default: 109 default:
108 { 110 {
109 int i = strlen(password); 111 int i = strlen(password);
112 if (i + 1 == password_size) {
113 password_size += 1024;
114 password = realloc(password, password_size);
115 }
110 password[i] = (char)codepoint; 116 password[i] = (char)codepoint;
111 password[i + 1] = '\0'; 117 password[i + 1] = '\0';
112 break; 118 break;
@@ -280,7 +286,8 @@ int main(int argc, char **argv) {
280 sway_abort("Unsupported scaling mode: %s", scaling_mode_str); 286 sway_abort("Unsupported scaling mode: %s", scaling_mode_str);
281 } 287 }
282 288
283 password = malloc(1024); // TODO: Let this grow 289 password_size = 1024;
290 password = malloc(password_size);
284 password[0] = '\0'; 291 password[0] = '\0';
285 surfaces = create_list(); 292 surfaces = create_list();
286 registry = registry_poll(); 293 registry = registry_poll();