Misc fixes (coverity)

This commit is contained in:
Nicolas Williams
2016-11-20 17:43:07 -06:00
parent 6696920d9e
commit f38089257b
19 changed files with 105 additions and 81 deletions

View File

@@ -49,6 +49,7 @@ kadm5_s_init_with_context(krb5_context context,
char *dbname;
char *stash_file;
*server_handle = NULL;
ret = _kadm5_s_init_context(&ctx, realm_params, context);
if(ret)
return ret;
@@ -74,12 +75,13 @@ kadm5_s_init_with_context(krb5_context context,
#endif
ret = hdb_create(ctx->context, &ctx->db, dbname);
if(ret)
return ret;
ret = hdb_set_master_keyfile (ctx->context,
ctx->db, stash_file);
if(ret)
if (ret == 0)
ret = hdb_set_master_keyfile(ctx->context,
ctx->db, stash_file);
if (ret) {
kadm5_s_destroy(ctx);
return ret;
}
ctx->log_context.log_fd = -1;
@@ -94,14 +96,12 @@ kadm5_s_init_with_context(krb5_context context,
socket_set_nonblocking(ctx->log_context.socket_fd, 1);
ret = krb5_parse_name(ctx->context, client_name, &ctx->caller);
if(ret)
return ret;
ret = _kadm5_acl_init(ctx);
if(ret)
return ret;
*server_handle = ctx;
if (ret == 0)
ret = _kadm5_acl_init(ctx);
if (ret)
kadm5_s_destroy(ctx);
else
*server_handle = ctx;
return 0;
}

View File

@@ -79,17 +79,21 @@ kadm5_c_randkey_principal(void *server_handle,
*
* - opaque string2key parameters (salt, rounds, ...)
*/
krb5_store_int32(sp, kadm_randkey);
krb5_store_principal(sp, princ);
ret = krb5_store_int32(sp, kadm_randkey);
if (ret == 0)
ret = krb5_store_principal(sp, princ);
if (keepold == TRUE || n_ks_tuple > 0)
krb5_store_uint32(sp, keepold);
if (n_ks_tuple > 0)
krb5_store_uint32(sp, n_ks_tuple);
for (i = 0; i < n_ks_tuple; i++) {
krb5_store_int32(sp, ks_tuple[i].ks_enctype);
krb5_store_int32(sp, ks_tuple[i].ks_salttype);
if (ret == 0 && (keepold == TRUE || n_ks_tuple > 0))
ret = krb5_store_uint32(sp, keepold);
if (ret == 0 && n_ks_tuple > 0)
ret = krb5_store_uint32(sp, n_ks_tuple);
for (i = 0; ret == 0 && i < n_ks_tuple; i++) {
ret = krb5_store_int32(sp, ks_tuple[i].ks_enctype);
if (ret == 0)
krb5_store_int32(sp, ks_tuple[i].ks_salttype);
}
if (ret)
return ret;
/* Future extensions go here */
ret = _kadm5_client_send(context, sp);
@@ -106,28 +110,35 @@ kadm5_c_randkey_principal(void *server_handle,
return ENOMEM;
}
krb5_clear_error_message(context->context);
krb5_ret_int32(sp, &tmp);
ret = tmp;
if(ret == 0){
ret = krb5_ret_int32(sp, &tmp);
if (ret == 0)
ret = tmp;
if (ret == 0){
krb5_keyblock *k;
krb5_ret_int32(sp, &tmp);
ret = krb5_ret_int32(sp, &tmp);
if (ret)
goto out;
if (tmp < 0) {
ret = EOVERFLOW;
goto out;
}
k = malloc(tmp * sizeof(*k));
k = calloc(tmp, sizeof(*k));
if (k == NULL) {
ret = ENOMEM;
goto out;
}
for(i = 0; i < tmp; i++)
krb5_ret_keyblock(sp, &k[i]);
if (n_keys && new_keys) {
for(i = 0; ret == 0 && i < tmp; i++)
ret = krb5_ret_keyblock(sp, &k[i]);
if (ret == 0 && n_keys && new_keys) {
*n_keys = tmp;
*new_keys = k;
} else
} else {
krb5_free_keyblock_contents(context->context, &k[i]);
for (; i > 0; i--)
krb5_free_keyblock_contents(context->context, &k[i - 1]);
free(k);
}
}
out:
krb5_storage_free(sp);