segfaultを修正した
このコミットが含まれているのは:
コミット
380cb73242
21
addpass.c
21
addpass.c
|
@ -78,7 +78,7 @@ void addpass(char* file) {
|
||||||
// パスワードを保存する
|
// パスワードを保存する
|
||||||
gpgme_ctx_t ctx;
|
gpgme_ctx_t ctx;
|
||||||
gpgme_error_t err;
|
gpgme_error_t err;
|
||||||
gpgme_key_t key;
|
gpgme_key_t key[2] = {NULL, NULL};
|
||||||
gpgme_data_t in, out;
|
gpgme_data_t in, out;
|
||||||
FILE *gpgfile;
|
FILE *gpgfile;
|
||||||
|
|
||||||
|
@ -144,14 +144,14 @@ void addpass(char* file) {
|
||||||
keyid[strcspn(keyid, "\n")] = 0;
|
keyid[strcspn(keyid, "\n")] = 0;
|
||||||
fclose(keyfile);
|
fclose(keyfile);
|
||||||
|
|
||||||
err = gpgme_get_key(ctx, keyid, &key, 0);
|
err = gpgme_get_key(ctx, keyid, &key[0], 0);
|
||||||
if (err) {
|
if (err) {
|
||||||
fprintf(stderr, "鍵を受取に失敗: %s\n", gpgme_strerror(err));
|
fprintf(stderr, "鍵を受取に失敗: %s\n", gpgme_strerror(err));
|
||||||
free(keyid);
|
free(keyid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key == NULL) {
|
if (key[0] == NULL) {
|
||||||
fprintf(stderr, "エラー:鍵はNULLです。\n");
|
fprintf(stderr, "エラー:鍵はNULLです。\n");
|
||||||
free(keyid);
|
free(keyid);
|
||||||
return;
|
return;
|
||||||
|
@ -160,14 +160,13 @@ void addpass(char* file) {
|
||||||
free(keyid);
|
free(keyid);
|
||||||
|
|
||||||
// 暗号化
|
// 暗号化
|
||||||
gpgme_key_t recp[1] = {key};
|
err = gpgme_op_encrypt(ctx, &key[0], GPGME_ENCRYPT_ALWAYS_TRUST, in, out);
|
||||||
err = gpgme_op_encrypt(ctx, recp, GPGME_ENCRYPT_ALWAYS_TRUST, in, out);
|
|
||||||
if (err) {
|
if (err) {
|
||||||
fprintf(stderr, "暗号化に失敗: %s\n", gpgme_strerror(err));
|
fprintf(stderr, "暗号化に失敗: %s\n", gpgme_strerror(err));
|
||||||
gpgme_data_release(in);
|
gpgme_data_release(in);
|
||||||
gpgme_data_release(out);
|
gpgme_data_release(out);
|
||||||
gpgme_release(ctx);
|
gpgme_release(ctx);
|
||||||
gpgme_key_release(key);
|
gpgme_key_release(key[0]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +178,7 @@ void addpass(char* file) {
|
||||||
gpgme_data_release(in);
|
gpgme_data_release(in);
|
||||||
gpgme_data_release(out);
|
gpgme_data_release(out);
|
||||||
gpgme_release(ctx);
|
gpgme_release(ctx);
|
||||||
gpgme_key_release(key);
|
gpgme_key_release(key[0]);
|
||||||
perror("メモリを割当に失敗。");
|
perror("メモリを割当に失敗。");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -197,7 +196,7 @@ void addpass(char* file) {
|
||||||
gpgme_data_release(in);
|
gpgme_data_release(in);
|
||||||
gpgme_data_release(out);
|
gpgme_data_release(out);
|
||||||
gpgme_release(ctx);
|
gpgme_release(ctx);
|
||||||
gpgme_key_release(key);
|
gpgme_key_release(key[0]);
|
||||||
perror("ディレクトリを創作に失敗。");
|
perror("ディレクトリを創作に失敗。");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -212,7 +211,7 @@ void addpass(char* file) {
|
||||||
gpgme_data_release(in);
|
gpgme_data_release(in);
|
||||||
gpgme_data_release(out);
|
gpgme_data_release(out);
|
||||||
gpgme_release(ctx);
|
gpgme_release(ctx);
|
||||||
gpgme_key_release(key);
|
gpgme_key_release(key[0]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +224,7 @@ void addpass(char* file) {
|
||||||
gpgme_data_release(in);
|
gpgme_data_release(in);
|
||||||
gpgme_data_release(out);
|
gpgme_data_release(out);
|
||||||
gpgme_release(ctx);
|
gpgme_release(ctx);
|
||||||
gpgme_key_release(key);
|
gpgme_key_release(key[0]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,7 +243,7 @@ void addpass(char* file) {
|
||||||
gpgme_data_release(in);
|
gpgme_data_release(in);
|
||||||
gpgme_data_release(out);
|
gpgme_data_release(out);
|
||||||
gpgme_release(ctx);
|
gpgme_release(ctx);
|
||||||
gpgme_key_release(key);
|
gpgme_key_release(key[0]);
|
||||||
|
|
||||||
printf("パスワードを保存出来ました。\n");
|
printf("パスワードを保存出来ました。\n");
|
||||||
}
|
}
|
||||||
|
|
2
main.c
2
main.c
|
@ -25,7 +25,7 @@ void helpme() {
|
||||||
//printf("%s -l :パスワード一覧を表示\n", sofname);
|
//printf("%s -l :パスワード一覧を表示\n", sofname);
|
||||||
printf("%s -a <パスワード名> :パスワードを追加\n", sofname);
|
printf("%s -a <パスワード名> :パスワードを追加\n", sofname);
|
||||||
//printf("%s -d <パスワード名> :パスワードを削除\n", sofname);
|
//printf("%s -d <パスワード名> :パスワードを削除\n", sofname);
|
||||||
//printf("%s -g <文字数> [risk|secure] <パスワード名> :希望文字数でパスワードをランダムに作成して、追加する。risk=英数字のみ(不安)、secure=英数字+特別文字(デフォルト)を使用\n", sofname);
|
//printf("%s -g <文字数> [risk|secure] <パスワード名> :希望文字数でパスワードをランダムに作成する。risk=英数字のみ(不安)、secure=英数字+特別文字(デフォルト)を使用\n", sofname);
|
||||||
//printf("%s -o <パスワード名>\n :ワンタイムパスワード(TOTP)を表示。存在しなければ、創作する", sofname);
|
//printf("%s -o <パスワード名>\n :ワンタイムパスワード(TOTP)を表示。存在しなければ、創作する", sofname);
|
||||||
printf("%s -h :ヘルプを表示\n", sofname);
|
printf("%s -h :ヘルプを表示\n", sofname);
|
||||||
printf("%s -v :バージョンを表示\n", sofname);
|
printf("%s -v :バージョンを表示\n", sofname);
|
||||||
|
|
読み込み中…
新しいイシューから参照