(kt_add): check the return-value from fgets and overwrite the password
for paranoid reasons git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6963 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -197,7 +197,8 @@ kt_add(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if(principal_string == NULL) {
|
if(principal_string == NULL) {
|
||||||
printf("Principal: ");
|
printf("Principal: ");
|
||||||
fgets(buf, sizeof(buf), stdin);
|
if (fgets(buf, sizeof(buf), stdin) == NULL)
|
||||||
|
return 0;
|
||||||
buf[strcspn(buf, "\r\n")] = '\0';
|
buf[strcspn(buf, "\r\n")] = '\0';
|
||||||
principal_string = buf;
|
principal_string = buf;
|
||||||
}
|
}
|
||||||
@@ -208,7 +209,10 @@ kt_add(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if(enctype_string == NULL) {
|
if(enctype_string == NULL) {
|
||||||
printf("Encryption type: ");
|
printf("Encryption type: ");
|
||||||
fgets(buf, sizeof(buf), stdin);
|
if (fgets(buf, sizeof(buf), stdin) == NULL) {
|
||||||
|
krb5_free_principal (context, entry.principal);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
buf[strcspn(buf, "\r\n")] = '\0';
|
buf[strcspn(buf, "\r\n")] = '\0';
|
||||||
enctype_string = buf;
|
enctype_string = buf;
|
||||||
}
|
}
|
||||||
@@ -219,19 +223,24 @@ kt_add(int argc, char **argv)
|
|||||||
enctype = t;
|
enctype = t;
|
||||||
else {
|
else {
|
||||||
krb5_warn(context, ret, "%s", enctype_string);
|
krb5_warn(context, ret, "%s", enctype_string);
|
||||||
if(entry.principal)
|
krb5_free_principal(context, entry.principal);
|
||||||
krb5_free_principal(context, entry.principal);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(kvno == -1) {
|
if(kvno == -1) {
|
||||||
printf("Key version: ");
|
printf("Key version: ");
|
||||||
fgets(buf, sizeof(buf), stdin);
|
if (fgets(buf, sizeof(buf), stdin) == NULL) {
|
||||||
|
krb5_free_principal (context, entry.principal);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
buf[strcspn(buf, "\r\n")] = '\0';
|
buf[strcspn(buf, "\r\n")] = '\0';
|
||||||
kvno = atoi(buf);
|
kvno = atoi(buf);
|
||||||
}
|
}
|
||||||
if(password_string == NULL && random_flag == 0) {
|
if(password_string == NULL && random_flag == 0) {
|
||||||
des_read_pw_string(buf, sizeof(buf), "Password: ", 1);
|
if(des_read_pw_string(buf, sizeof(buf), "Password: ", 1)) {
|
||||||
|
krb5_free_principal (context, entry.principal);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
password_string = buf;
|
password_string = buf;
|
||||||
}
|
}
|
||||||
if(password_string) {
|
if(password_string) {
|
||||||
@@ -250,6 +259,7 @@ kt_add(int argc, char **argv)
|
|||||||
krb5_string_to_key(context, enctype, password_string,
|
krb5_string_to_key(context, enctype, password_string,
|
||||||
entry.principal, &entry.keyblock);
|
entry.principal, &entry.keyblock);
|
||||||
}
|
}
|
||||||
|
memset (password_string, 0, strlen(password_string));
|
||||||
} else {
|
} else {
|
||||||
krb5_generate_random_keyblock(context, enctype, &entry.keyblock);
|
krb5_generate_random_keyblock(context, enctype, &entry.keyblock);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user