From: Greg Hudson Date: Wed, 24 Oct 2012 16:06:01 +0000 (-0400) Subject: Don't save empty cc_config_out in ccache X-Git-Tag: krb5-1.12-alpha1~499 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ec6dc0e991b3653e16a637bfaa0daf783f82af31;p=thirdparty%2Fkrb5.git Don't save empty cc_config_out in ccache Add an internal json function to make it easier to detect if an object is empty, and use it to avoid creating a ccache config entry for preauth module config data if there isn't any to save. ticket: 7427 (new) target_version: 1.11 tags: pullup --- diff --git a/src/include/k5-json.h b/src/include/k5-json.h index fb9a3afe6c..42dcfa3d38 100644 --- a/src/include/k5-json.h +++ b/src/include/k5-json.h @@ -148,6 +148,8 @@ k5_json_object k5_json_object_create(void); void k5_json_object_iterate(k5_json_object obj, k5_json_object_iterator_fn func, void *arg); +/* Return the number of mappings in an object. */ +size_t k5_json_object_count(k5_json_object obj); /* Store val into object at key, incrementing val's reference count. */ int k5_json_object_set(k5_json_object obj, const char *key, k5_json_value val); diff --git a/src/lib/krb5/krb/get_in_tkt.c b/src/lib/krb5/krb/get_in_tkt.c index c2cd9e8837..c20d4b73b5 100644 --- a/src/lib/krb5/krb/get_in_tkt.c +++ b/src/lib/krb5/krb/get_in_tkt.c @@ -1198,7 +1198,8 @@ save_cc_config_out_data(krb5_context context, krb5_ccache ccache, char *encoded; krb5_error_code code; - if (ctx->cc_config_out == NULL) + if (ctx->cc_config_out == NULL || + k5_json_object_count(ctx->cc_config_out) == 0) return 0; encoded = k5_json_encode(ctx->cc_config_out); if (encoded == NULL) diff --git a/src/util/support/json.c b/src/util/support/json.c index e6d7eea269..f02fe263df 100644 --- a/src/util/support/json.c +++ b/src/util/support/json.c @@ -295,6 +295,12 @@ k5_json_object_create(void) return alloc_value(&object_type, sizeof(struct k5_json_object_st)); } +size_t +k5_json_object_count(k5_json_object obj) +{ + return obj->len; +} + /* Return the entry for key within obj, or NULL if none exists. */ static struct entry * object_search(k5_json_object obj, const char *key) diff --git a/src/util/support/libkrb5support-fixed.exports b/src/util/support/libkrb5support-fixed.exports index 13b1b575e9..0579611fda 100644 --- a/src/util/support/libkrb5support-fixed.exports +++ b/src/util/support/libkrb5support-fixed.exports @@ -11,6 +11,7 @@ k5_json_get_tid k5_json_null_create k5_json_number_create k5_json_number_value +k5_json_object_count k5_json_object_create k5_json_object_get k5_json_object_iterate