From f04d6e99c55d29452012ee77c769daced66493b5 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Nov 25 2009 16:55:48 +0000 Subject: - be ready for when IPA starts wrapping the result set in another struct and naming it 'result', per freeipa-devel --- diff --git a/src/submit-x.c b/src/submit-x.c index 0342036..f8167f2 100644 --- a/src/submit-x.c +++ b/src/submit-x.c @@ -441,7 +441,7 @@ cm_submit_x_get_named_n(struct cm_submit_x_context *ctx, const char *name, int *n) { int i; - xmlrpc_value *arg, *val; + xmlrpc_value *arg, *val, *result; *n = 0; arg = cm_submit_x_get_struct(ctx); if (arg == NULL) { @@ -449,7 +449,17 @@ cm_submit_x_get_named_n(struct cm_submit_x_context *ctx, } xmlrpc_struct_find_value(&ctx->xenv, arg, name, &val); if (val == NULL) { - return -1; + xmlrpc_struct_find_value(&ctx->xenv, arg, "result", &result); + if (result == NULL) { + return -1; + } + if (xmlrpc_value_type(result) != XMLRPC_TYPE_STRUCT) { + return -1; + } + xmlrpc_struct_find_value(&ctx->xenv, result, name, &val); + if (val == NULL) { + return -1; + } } if (xmlrpc_value_type(val) != XMLRPC_TYPE_INT) { fprintf(stderr, "Expected value \"%s\" is not an integer.\n", @@ -470,7 +480,7 @@ cm_submit_x_get_named_b(struct cm_submit_x_context *ctx, const char *name, int *b) { xmlrpc_bool boo; - xmlrpc_value *arg, *val; + xmlrpc_value *arg, *val, *result; *b = 0; arg = cm_submit_x_get_struct(ctx); if (arg == NULL) { @@ -478,7 +488,17 @@ cm_submit_x_get_named_b(struct cm_submit_x_context *ctx, } xmlrpc_struct_find_value(&ctx->xenv, arg, name, &val); if (val == NULL) { - return -1; + xmlrpc_struct_find_value(&ctx->xenv, arg, "result", &result); + if (result == NULL) { + return -1; + } + if (xmlrpc_value_type(result) != XMLRPC_TYPE_STRUCT) { + return -1; + } + xmlrpc_struct_find_value(&ctx->xenv, result, name, &val); + if (val == NULL) { + return -1; + } } if (xmlrpc_value_type(val) != XMLRPC_TYPE_BOOL) { fprintf(stderr, "Expected value \"%s\" is not a boolean.\n", @@ -502,7 +522,7 @@ cm_submit_x_get_named_s(struct cm_submit_x_context *ctx, char *tmp; const unsigned char *binary; size_t length; - xmlrpc_value *arg, *val; + xmlrpc_value *arg, *val, *result; *s = NULL; arg = cm_submit_x_get_struct(ctx); if (arg == NULL) { @@ -510,7 +530,17 @@ cm_submit_x_get_named_s(struct cm_submit_x_context *ctx, } xmlrpc_struct_find_value(&ctx->xenv, arg, name, &val); if (val == NULL) { - return -1; + xmlrpc_struct_find_value(&ctx->xenv, arg, "result", &result); + if (result == NULL) { + return -1; + } + if (xmlrpc_value_type(result) != XMLRPC_TYPE_STRUCT) { + return -1; + } + xmlrpc_struct_find_value(&ctx->xenv, result, name, &val); + if (val == NULL) { + return -1; + } } if (xmlrpc_value_type(val) != XMLRPC_TYPE_STRING) { if (xmlrpc_value_type(val) == XMLRPC_TYPE_BASE64) {