summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2013-01-22 14:31:37 +0100
committerJakub Hrozek <jhrozek@redhat.com>2013-01-22 19:46:30 +0100
commite54cde6e089080e919bf990ba1fee885b227000c (patch)
treed547ed76c1421f40e0eaf02627e515284727ac22
parente0a3fbf8ba571c90a765135a04cf51a98ceaf407 (diff)
downloadsssd-e54cde6e089080e919bf990ba1fee885b227000c.tar.gz
sssd-e54cde6e089080e919bf990ba1fee885b227000c.tar.xz
sssd-e54cde6e089080e919bf990ba1fee885b227000c.zip
sudo responder: change num_rules type from size_t to uint32_t
https://fedorahosted.org/sssd/ticket/1779 2^32 should be enough to store sudo rules. size_t type was causing troubles on big endian architectures, because it wasn't used correctly in combination with D-Bus. Resolved Conflicts: src/responder/sudo/sudosrv_get_sudorules.c
-rw-r--r--src/db/sysdb_sudo.c6
-rw-r--r--src/db/sysdb_sudo.h4
-rw-r--r--src/responder/sudo/sudosrv_cmd.c2
-rw-r--r--src/responder/sudo/sudosrv_dp.c10
-rw-r--r--src/responder/sudo/sudosrv_get_sudorules.c16
-rw-r--r--src/responder/sudo/sudosrv_private.h8
-rw-r--r--src/responder/sudo/sudosrv_query.c6
7 files changed, 26 insertions, 26 deletions
diff --git a/src/db/sysdb_sudo.c b/src/db/sysdb_sudo.c
index c1845f9be..b89c8f2a6 100644
--- a/src/db/sysdb_sudo.c
+++ b/src/db/sysdb_sudo.c
@@ -151,13 +151,13 @@ done:
}
errno_t sysdb_sudo_filter_rules_by_time(TALLOC_CTX *mem_ctx,
- size_t in_num_rules,
+ uint32_t in_num_rules,
struct sysdb_attrs **in_rules,
time_t now,
- size_t *_num_rules,
+ uint32_t *_num_rules,
struct sysdb_attrs ***_rules)
{
- size_t num_rules = 0;
+ uint32_t num_rules = 0;
struct sysdb_attrs **rules = NULL;
TALLOC_CTX *tmp_ctx = NULL;
bool allowed = false;
diff --git a/src/db/sysdb_sudo.h b/src/db/sysdb_sudo.h
index 35b350c63..de34cb373 100644
--- a/src/db/sysdb_sudo.h
+++ b/src/db/sysdb_sudo.h
@@ -62,10 +62,10 @@
| SYSDB_SUDO_FILTER_NGRS
errno_t sysdb_sudo_filter_rules_by_time(TALLOC_CTX *mem_ctx,
- size_t in_num_rules,
+ uint32_t in_num_rules,
struct sysdb_attrs **in_rules,
time_t now,
- size_t *_num_rules,
+ uint32_t *_num_rules,
struct sysdb_attrs ***_rules);
errno_t
diff --git a/src/responder/sudo/sudosrv_cmd.c b/src/responder/sudo/sudosrv_cmd.c
index 0aed691b2..d4611aa4a 100644
--- a/src/responder/sudo/sudosrv_cmd.c
+++ b/src/responder/sudo/sudosrv_cmd.c
@@ -97,7 +97,7 @@ errno_t sudosrv_cmd_done(struct sudo_cmd_ctx *cmd_ctx, int ret)
{
uint8_t *response_body = NULL;
size_t response_len = 0;
- size_t num_rules = cmd_ctx->num_rules;
+ uint32_t num_rules = cmd_ctx->num_rules;
struct sysdb_attrs **rules = cmd_ctx->rules;
switch (ret) {
diff --git a/src/responder/sudo/sudosrv_dp.c b/src/responder/sudo/sudosrv_dp.c
index 208606c26..3cd8fe8d8 100644
--- a/src/responder/sudo/sudosrv_dp.c
+++ b/src/responder/sudo/sudosrv_dp.c
@@ -37,7 +37,7 @@ struct sss_dp_get_sudoers_info {
bool fast_reply;
enum sss_dp_sudo_type type;
const char *name;
- size_t num_rules;
+ uint32_t num_rules;
struct sysdb_attrs **rules;
};
@@ -51,7 +51,7 @@ sss_dp_get_sudoers_send(TALLOC_CTX *mem_ctx,
bool fast_reply,
enum sss_dp_sudo_type type,
const char *name,
- size_t num_rules,
+ uint32_t num_rules,
struct sysdb_attrs **rules)
{
struct tevent_req *req;
@@ -82,7 +82,7 @@ sss_dp_get_sudoers_send(TALLOC_CTX *mem_ctx,
switch (info->type) {
case SSS_DP_SUDO_REFRESH_RULES:
key = talloc_asprintf(state, "%d:%u:%s@%s", type,
- (unsigned int)num_rules, name, dom->name);
+ num_rules, name, dom->name);
break;
case SSS_DP_SUDO_FULL_REFRESH:
key = talloc_asprintf(state, "%d:%s", type, dom->name);
@@ -122,7 +122,7 @@ sss_dp_get_sudoers_msg(void *pvt)
struct sss_dp_get_sudoers_info *info;
uint32_t be_type = 0;
const char *rule_name = NULL;
- int i;
+ uint32_t i;
info = talloc_get_type(pvt, struct sss_dp_get_sudoers_info);
@@ -151,7 +151,7 @@ sss_dp_get_sudoers_msg(void *pvt)
/* create the message */
DEBUG(SSSDBG_TRACE_FUNC,
("Creating SUDOers request for [%s][%u][%s][%u]\n",
- info->dom->name, be_type, info->name, (unsigned int)info->num_rules));
+ info->dom->name, be_type, info->name, info->num_rules));
dbus_message_iter_init_append(msg, &iter);
diff --git a/src/responder/sudo/sudosrv_get_sudorules.c b/src/responder/sudo/sudosrv_get_sudorules.c
index f79d47dcb..fd2902a1e 100644
--- a/src/responder/sudo/sudosrv_get_sudorules.c
+++ b/src/responder/sudo/sudosrv_get_sudorules.c
@@ -320,7 +320,7 @@ done:
static errno_t sudosrv_get_sudorules_from_cache(TALLOC_CTX *mem_ctx,
struct sudo_cmd_ctx *cmd_ctx,
struct sysdb_attrs ***_rules,
- size_t *_num_rules);
+ uint32_t *_num_rules);
static void
sudosrv_get_sudorules_dp_callback(uint16_t err_maj, uint32_t err_min,
const char *err_msg, void *ptr);
@@ -336,7 +336,7 @@ static errno_t sudosrv_get_sudorules_query_cache(TALLOC_CTX *mem_ctx,
uid_t uid,
char **groupnames,
struct sysdb_attrs ***_rules,
- size_t *_count);
+ uint32_t *_count);
errno_t sudosrv_get_rules(struct sudo_cmd_ctx *cmd_ctx)
{
@@ -346,7 +346,7 @@ errno_t sudosrv_get_rules(struct sudo_cmd_ctx *cmd_ctx)
struct sysdb_ctx *user_sysdb = NULL;
struct sysdb_ctx *rules_sysdb = NULL;
char **groupnames = NULL;
- size_t expired_rules_num = 0;
+ uint32_t expired_rules_num = 0;
struct sysdb_attrs **expired_rules = NULL;
errno_t ret;
unsigned int flags = SYSDB_SUDO_FILTER_NONE;
@@ -563,7 +563,7 @@ sudosrv_get_sudorules_dp_callback(uint16_t err_maj, uint32_t err_min,
static errno_t sudosrv_get_sudorules_from_cache(TALLOC_CTX *mem_ctx,
struct sudo_cmd_ctx *cmd_ctx,
struct sysdb_attrs ***_rules,
- size_t *_num_rules)
+ uint32_t *_num_rules)
{
TALLOC_CTX *tmp_ctx;
errno_t ret;
@@ -573,8 +573,8 @@ static errno_t sudosrv_get_sudorules_from_cache(TALLOC_CTX *mem_ctx,
const char *debug_name = NULL;
unsigned int flags = SYSDB_SUDO_FILTER_NONE;
struct sysdb_attrs **rules = NULL;
- size_t num_rules = 0;
- const char *attrs[] = { SYSDB_OBJECTCLASS
+ uint32_t num_rules = 0;
+ const char *attrs[] = { SYSDB_OBJECTCLASS,
SYSDB_SUDO_CACHE_AT_CN,
SYSDB_SUDO_CACHE_AT_USER,
SYSDB_SUDO_CACHE_AT_HOST,
@@ -671,7 +671,7 @@ static errno_t sudosrv_get_sudorules_query_cache(TALLOC_CTX *mem_ctx,
uid_t uid,
char **groupnames,
struct sysdb_attrs ***_rules,
- size_t *_count)
+ uint32_t *_count)
{
TALLOC_CTX *tmp_ctx;
char *filter;
@@ -722,7 +722,7 @@ static errno_t sudosrv_get_sudorules_query_cache(TALLOC_CTX *mem_ctx,
}
*_rules = talloc_steal(mem_ctx, rules);
- *_count = count;
+ *_count = (uint32_t)count;
ret = EOK;
done:
diff --git a/src/responder/sudo/sudosrv_private.h b/src/responder/sudo/sudosrv_private.h
index 9d3156ca1..71a272ab4 100644
--- a/src/responder/sudo/sudosrv_private.h
+++ b/src/responder/sudo/sudosrv_private.h
@@ -62,11 +62,11 @@ struct sudo_cmd_ctx {
struct sss_domain_info *domain;
bool check_next;
- size_t expired_rules_num;
+ uint32_t expired_rules_num;
/* output data */
struct sysdb_attrs **rules;
- size_t num_rules;
+ uint32_t num_rules;
};
struct sudo_dom_ctx {
@@ -101,7 +101,7 @@ errno_t sudosrv_parse_query_recv(TALLOC_CTX *mem_ctx,
errno_t sudosrv_build_response(TALLOC_CTX *mem_ctx,
uint32_t error,
- int rules_num,
+ uint32_t rules_num,
struct sysdb_attrs **rules,
uint8_t **_response_body,
size_t *_response_len);
@@ -113,7 +113,7 @@ sss_dp_get_sudoers_send(TALLOC_CTX *mem_ctx,
bool fast_reply,
enum sss_dp_sudo_type type,
const char *name,
- size_t num_rules,
+ uint32_t num_rules,
struct sysdb_attrs **rules);
errno_t
diff --git a/src/responder/sudo/sudosrv_query.c b/src/responder/sudo/sudosrv_query.c
index 1574104cb..a8501df56 100644
--- a/src/responder/sudo/sudosrv_query.c
+++ b/src/responder/sudo/sudosrv_query.c
@@ -188,7 +188,7 @@ done:
*/
errno_t sudosrv_build_response(TALLOC_CTX *mem_ctx,
uint32_t error,
- int rules_num,
+ uint32_t rules_num,
struct sysdb_attrs **rules,
uint8_t **_response_body,
size_t *_response_len)
@@ -196,7 +196,7 @@ errno_t sudosrv_build_response(TALLOC_CTX *mem_ctx,
uint8_t *response_body = NULL;
size_t response_len = 0;
TALLOC_CTX *tmp_ctx = NULL;
- int i = 0;
+ uint32_t i = 0;
errno_t ret = EOK;
tmp_ctx = talloc_new(NULL);
@@ -225,7 +225,7 @@ errno_t sudosrv_build_response(TALLOC_CTX *mem_ctx,
}
/* rules count */
- ret = sudosrv_response_append_uint32(tmp_ctx, (uint32_t)rules_num,
+ ret = sudosrv_response_append_uint32(tmp_ctx, rules_num,
&response_body, &response_len);
if (ret != EOK) {
goto fail;