about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJohn Hernandez <129467592+H3rnand3zzz@users.noreply.github.com>2023-04-13 10:14:54 +0200
committerJohn Hernandez <129467592+H3rnand3zzz@users.noreply.github.com>2023-04-13 17:16:55 +0200
commit5e8f1f9c853eff2fe49cc7f1dadb285b3c337c18 (patch)
treee774a94b78a72c9fc2e6bc8b3025375312cfc699
parent766dc76e337c96e71edc698a8ee292014293c44f (diff)
downloadprofani-tty-5e8f1f9c853eff2fe49cc7f1dadb285b3c337c18.tar.gz
Fix memory corruption crash
Under certain circumstances setting plain_str[len] to 0 might lead to crash
and it does not follow the best practices as well.

This change allows better handling of buffer copying and prevents crash.
-rw-r--r--src/pgp/gpg.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/pgp/gpg.c b/src/pgp/gpg.c
index 8762660d..3ef69c1d 100644
--- a/src/pgp/gpg.c
+++ b/src/pgp/gpg.c
@@ -721,10 +721,9 @@ p_gpg_decrypt(const char* const cipher)
     char* plain_str = gpgme_data_release_and_get_mem(plain_data, &len);
     char* result = NULL;
     if (plain_str) {
-        plain_str[len] = 0;
-        result = g_strdup(plain_str);
+        result = strndup(plain_str, len);
+        gpgme_free(plain_str);
     }
-    gpgme_free(plain_str);
 
     if (passphrase_attempt) {
         passphrase = strdup(passphrase_attempt);