]> Nishi Git Mirror - sp.git/commitdiff
segfaultを修正した
author諏訪子 <suwako@076.moe>
Wed, 29 Nov 2023 12:58:30 +0000 (21:58 +0900)
committer諏訪子 <suwako@076.moe>
Wed, 29 Nov 2023 12:58:30 +0000 (21:58 +0900)
addpass.c
main.c

index d4ac8f94ea504574d730a47f6b2c1b5924b57967..8a207af23bf2f20596ee19e2eeeb0b404c7855f3 100644 (file)
--- a/addpass.c
+++ b/addpass.c
@@ -78,7 +78,7 @@ void addpass(char* file) {
   // パスワードを保存する
   gpgme_ctx_t ctx;
   gpgme_error_t err;
-  gpgme_key_t key;
+  gpgme_key_t key[2] = {NULL, NULL};
   gpgme_data_t in, out;
   FILE *gpgfile;
 
@@ -144,14 +144,14 @@ void addpass(char* file) {
   keyid[strcspn(keyid, "\n")] = 0;
   fclose(keyfile);
 
-  err = gpgme_get_key(ctx, keyid, &key, 0);
+  err = gpgme_get_key(ctx, keyid, &key[0], 0);
   if (err) {
     fprintf(stderr, "鍵を受取に失敗: %s\n", gpgme_strerror(err));
     free(keyid);
     return;
   }
 
-  if (key == NULL) {
+  if (key[0] == NULL) {
     fprintf(stderr, "エラー:鍵はNULLです。\n");
     free(keyid);
     return;
@@ -160,14 +160,13 @@ void addpass(char* file) {
   free(keyid);
 
   // 暗号化
-  gpgme_key_t recp[1] = {key};
-  err = gpgme_op_encrypt(ctx, recp, GPGME_ENCRYPT_ALWAYS_TRUST, in, out);
+  err = gpgme_op_encrypt(ctx, &key[0], GPGME_ENCRYPT_ALWAYS_TRUST, in, out);
   if (err) {
     fprintf(stderr, "暗号化に失敗: %s\n", gpgme_strerror(err));
     gpgme_data_release(in);
     gpgme_data_release(out);
     gpgme_release(ctx);
-    gpgme_key_release(key);
+    gpgme_key_release(key[0]);
     return;
   }
 
@@ -179,7 +178,7 @@ void addpass(char* file) {
     gpgme_data_release(in);
     gpgme_data_release(out);
     gpgme_release(ctx);
-    gpgme_key_release(key);
+    gpgme_key_release(key[0]);
     perror("メモリを割当に失敗。");
     return;
   }
@@ -197,7 +196,7 @@ void addpass(char* file) {
       gpgme_data_release(in);
       gpgme_data_release(out);
       gpgme_release(ctx);
-      gpgme_key_release(key);
+      gpgme_key_release(key[0]);
       perror("ディレクトリを創作に失敗。");
       return;
     }
@@ -212,7 +211,7 @@ void addpass(char* file) {
     gpgme_data_release(in);
     gpgme_data_release(out);
     gpgme_release(ctx);
-    gpgme_key_release(key);
+    gpgme_key_release(key[0]);
     return;
   }
 
@@ -225,7 +224,7 @@ void addpass(char* file) {
     gpgme_data_release(in);
     gpgme_data_release(out);
     gpgme_release(ctx);
-    gpgme_key_release(key);
+    gpgme_key_release(key[0]);
     return;
   }
 
@@ -244,7 +243,7 @@ void addpass(char* file) {
   gpgme_data_release(in);
   gpgme_data_release(out);
   gpgme_release(ctx);
-  gpgme_key_release(key);
+  gpgme_key_release(key[0]);
 
   printf("パスワードを保存出来ました。\n");
 }
diff --git a/main.c b/main.c
index 2ea05798822af42fb326a4849efcbf917613a2e7..4c50fc3efcf525bb32948678b9dda4048f70ce2d 100644 (file)
--- a/main.c
+++ b/main.c
@@ -25,7 +25,7 @@ void helpme() {
   //printf("%s -l                                       :パスワード一覧を表示\n", sofname);
   printf("%s -a <パスワード名>                        :パスワードを追加\n", sofname);
   //printf("%s -d <パスワード名>                        :パスワードを削除\n", sofname);
-  //printf("%s -g <æ\96\87å­\97æ\95°> [risk|secure] <ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89å\90\8d> ï¼\9aå¸\8cæ\9c\9bæ\96\87å­\97æ\95°ã\81§ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92ã\83©ã\83³ã\83\80ã\83 ã\81«ä½\9cæ\88\90ã\81\97ã\81¦ã\80\81追å\8a ã\81\99ã\82\8bã\80\82riskï¼\9dè\8b±æ\95°å­\97ã\81®ã\81¿ï¼\88ä¸\8då®\89ï¼\89ã\80\81secureï¼\9dè\8b±æ\95°å­\97ï¼\8bç\89¹å\88¥æ\96\87å­\97ï¼\88ã\83\87ã\83\95ã\82©ã\83«ã\83\88ï¼\89ã\82\92使ç\94¨\n", sofname);
+  //printf("%s -g <文字数> [risk|secure] <パスワード名> :希望文字数でパスワードをランダムに作成する。risk=英数字のみ(不安)、secure=英数字+特別文字(デフォルト)を使用\n", sofname);
   //printf("%s -o <パスワード名>\n                      :ワンタイムパスワード(TOTP)を表示。存在しなければ、創作する", sofname);
   printf("%s -h                                       :ヘルプを表示\n", sofname);
   printf("%s -v                                       :バージョンを表示\n", sofname);