From 64dd6c3412f961239ad4c6989aab67250d312c9d Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 26 Nov 2001 04:27:51 +0000 Subject: Another merge from appliance-head: in [ug]id_to_sid don't call the winbind function if the id is obviously going to be local. Cleanup of winbind [ug]id parameter handling. (This used to be commit 4ab9ca31a02b3388aa89a00e0390ea9e4c76283a) --- source3/nsswitch/winbindd_util.c | 54 ++++++---------------------------------- 1 file changed, 7 insertions(+), 47 deletions(-) (limited to 'source3/nsswitch') diff --git a/source3/nsswitch/winbindd_util.c b/source3/nsswitch/winbindd_util.c index c603bac054..033e5c38aa 100644 --- a/source3/nsswitch/winbindd_util.c +++ b/source3/nsswitch/winbindd_util.c @@ -764,60 +764,20 @@ void free_getent_state(struct getent_state *state) } } -/* Parse list of arguments to winbind uid or winbind gid parameters */ - -static BOOL parse_id_list(char *paramstr, BOOL is_user) -{ - uid_t id_low, id_high = 0; - - /* Give a nicer error message if no parameters specified */ - - if (strequal(paramstr, "")) { - DEBUG(0, ("winbind %s parameter missing\n", is_user ? "uid" : "gid")); - return False; - } - - /* Parse entry */ - - if (sscanf(paramstr, "%u-%u", &id_low, &id_high) != 2) { - DEBUG(0, ("winbind %s parameter invalid\n", - is_user ? "uid" : "gid")); - return False; - } - - /* Store id info */ - - if (is_user) { - server_state.uid_low = id_low; - server_state.uid_high = id_high; - } else { - server_state.gid_low = id_low; - server_state.gid_high = id_high; - } - - return True; -} - /* Initialise trusted domain info */ BOOL winbindd_param_init(void) { /* Parse winbind uid and winbind_gid parameters */ - if (!(parse_id_list(lp_winbind_uid(), True) && - parse_id_list(lp_winbind_gid(), False))) - return False; - - /* Check for reversed uid and gid ranges */ - - if (server_state.uid_low > server_state.uid_high) { - DEBUG(0, ("uid range invalid\n")); - return False; + if (!lp_winbind_uid(&server_state.uid_low, &server_state.uid_high)) { + DEBUG(0, ("winbind uid range missing or invalid\n")); + return False; } - - if (server_state.gid_low > server_state.gid_high) { - DEBUG(0, ("gid range invalid\n")); - return False; + + if (!lp_winbind_gid(&server_state.gid_low, &server_state.gid_high)) { + DEBUG(0, ("winbind gid range missing or invalid\n")); + return False; } return True; -- cgit