From 07a21dbfa5b9dc3cc6fa7417b64e4963f111fe1a Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 15 Dec 2008 11:32:45 +0100 Subject: s3:fix build of pam_winbind.so on older Linux systems. Older pam implementations on Linux define PAM_AUTHTOK_RECOVER_ERR instead of PAM_AUTHTOK_RECOVERY_ERR. We have always defined and are using PAM_AUTHTOK_RECOVER_ERR in all other places. Michael --- source3/nsswitch/pam_winbind.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source3') diff --git a/source3/nsswitch/pam_winbind.c b/source3/nsswitch/pam_winbind.c index be22ff3f5e..d049bdb1e7 100644 --- a/source3/nsswitch/pam_winbind.c +++ b/source3/nsswitch/pam_winbind.c @@ -93,8 +93,8 @@ static const char *_pam_error_code_str(int err) return "PAM_CONV_ERR"; case PAM_AUTHTOK_ERR: return "PAM_AUTHTOK_ERR"; - case PAM_AUTHTOK_RECOVERY_ERR: - return "PAM_AUTHTOK_RECOVERY_ERR"; + case PAM_AUTHTOK_RECOVER_ERR: + return "PAM_AUTHTOK_RECOVER_ERR"; case PAM_AUTHTOK_LOCK_BUSY: return "PAM_AUTHTOK_LOCK_BUSY"; case PAM_AUTHTOK_DISABLE_AGING: -- cgit From 606abdceacfcad19735cd80f59aad975a9e97b7c Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 15 Dec 2008 13:33:24 +0100 Subject: s3:loadparm: fix newly introduced leading whitespaces to tabs Michael --- source3/param/loadparm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source3') diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 7e7a1e505e..c74246c98e 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -425,7 +425,7 @@ struct service { bool bHideUnReadable; bool bHideUnWriteableFiles; bool bBrowseable; - bool bAccessBasedShareEnum; + bool bAccessBasedShareEnum; bool bAvailable; bool bRead_only; bool bNo_set_dir; @@ -569,7 +569,7 @@ static struct service sDefault = { False, /* bHideUnReadable */ False, /* bHideUnWriteableFiles */ True, /* bBrowseable */ - False, /* bAccessBasedShareEnum */ + False, /* bAccessBasedShareEnum */ True, /* bAvailable */ True, /* bRead_only */ True, /* bNo_set_dir */ -- cgit From 91c543f0b5a539da4194f14dee8cad0f980a117e Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 15 Dec 2008 14:16:06 +0100 Subject: s3:loadparm: rename lp_local_ptr() to lp_local_ptr_by_snum() Michael --- source3/include/proto.h | 2 +- source3/param/loadparm.c | 6 +++--- source3/web/swat.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'source3') diff --git a/source3/include/proto.h b/source3/include/proto.h index 2a8f83847f..9d86f16e69 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -4260,7 +4260,7 @@ const char *lp_ldap_machine_suffix(void); const char *lp_ldap_user_suffix(void); const char *lp_ldap_group_suffix(void); const char *lp_ldap_idmap_suffix(void); -void *lp_local_ptr(int snum, void *ptr); +void *lp_local_ptr_by_snum(int snum, void *ptr); bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue); void init_locals(void); bool lp_is_default(int snum, struct parm_struct *parm); diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index c74246c98e..3600266310 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -4599,7 +4599,7 @@ static void free_parameter(int snum, struct parm_struct parm) } else if (parm.p_class != P_LOCAL) { return; } else { - parm_ptr = lp_local_ptr(snum, parm.ptr); + parm_ptr = lp_local_ptr_by_snum(snum, parm.ptr); } if ((parm.type == P_STRING) || @@ -7171,7 +7171,7 @@ static void init_copymap(struct service *pservice) pointer into the default structure. ***************************************************************************/ -void *lp_local_ptr(int snum, void *ptr) +void *lp_local_ptr_by_snum(int snum, void *ptr) { return (void *)(((char *)ServicePtrs[snum]) + PTR_DIFF(ptr, &sDefault)); } @@ -7225,7 +7225,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue pszParmName)); return (True); } - parm_ptr = lp_local_ptr(snum, def_ptr); + parm_ptr = lp_local_ptr_by_snum(snum, def_ptr); } if (snum >= 0) { diff --git a/source3/web/swat.c b/source3/web/swat.c index 27c4b54e2f..b729e3b241 100644 --- a/source3/web/swat.c +++ b/source3/web/swat.c @@ -232,7 +232,7 @@ static void show_parameter(int snum, struct parm_struct *parm) TALLOC_CTX *ctx = talloc_stackframe(); if (parm->p_class == P_LOCAL && snum >= 0) { - ptr = lp_local_ptr(snum, ptr); + ptr = lp_local_ptr_by_snum(snum, ptr); } printf("%s", get_parm_translated(ctx, @@ -375,7 +375,7 @@ static void show_parameters(int snum, int allparameters, unsigned int parm_filte void *ptr = parm->ptr; if (parm->p_class == P_LOCAL && snum >= 0) { - ptr = lp_local_ptr(snum, ptr); + ptr = lp_local_ptr_by_snum(snum, ptr); } switch (parm->type) { -- cgit From 6244194265f7f1027c16664b2701ce114435a59b Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 15 Dec 2008 14:20:16 +0100 Subject: s3:loadparm: add lp_local_ptr() that operates on a service struct and use this in lp_local_ptr_by_snum(). Michael --- source3/param/loadparm.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'source3') diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 3600266310..43fd9d9d3a 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -671,6 +671,8 @@ static void set_server_role(void); static void set_default_server_announce_type(void); static void set_allowed_client_auth(void); +static void *lp_local_ptr(struct service *service, void *ptr); + static const struct enum_list enum_protocol[] = { {PROTOCOL_NT1, "NT1"}, {PROTOCOL_LANMAN2, "LANMAN2"}, @@ -7166,6 +7168,16 @@ static void init_copymap(struct service *pservice) bitmap_set(pservice->copymap, i); } +/*************************************************************************** + Return the local pointer to a parameter given a service struct and the + pointer into the default structure. +***************************************************************************/ + +static void *lp_local_ptr(struct service *service, void *ptr) +{ + return (void *)(((char *)service) + PTR_DIFF(ptr, &sDefault)); +} + /*************************************************************************** Return the local pointer to a parameter given the service number and the pointer into the default structure. @@ -7173,7 +7185,7 @@ static void init_copymap(struct service *pservice) void *lp_local_ptr_by_snum(int snum, void *ptr) { - return (void *)(((char *)ServicePtrs[snum]) + PTR_DIFF(ptr, &sDefault)); + return lp_local_ptr(ServicePtrs[snum], ptr); } /*************************************************************************** -- cgit From 0b0dc506d4b709b6373a19795276351285679eb3 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 15 Dec 2008 14:28:03 +0100 Subject: s3:loadparm: rename free_parameter() to free_one_parameter_by_snum() Michael --- source3/param/loadparm.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'source3') diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 43fd9d9d3a..580136446b 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -4585,10 +4585,12 @@ static void init_printer_values(struct service *pService) } } + /** - * Free the allocated data for one parameter for a given share. + * Free the allocated data for one parameter for a given share + * specified by an snum. */ -static void free_parameter(int snum, struct parm_struct parm) +static void free_one_parameter_by_snum(int snum, struct parm_struct parm) { void *parm_ptr; @@ -4621,7 +4623,7 @@ static void free_parameters(int snum) uint32_t i; for (i=0; parm_table[i].label; i++) { - free_parameter(snum, parm_table[i]); + free_one_parameter_by_snum(snum, parm_table[i]); } } -- cgit From 03f19dad795c247878918de95a8c1f63ec259d13 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 15 Dec 2008 14:29:34 +0100 Subject: s3:loadparm: rename free_parameters() to free_parameters_by_snum() Michael --- source3/param/loadparm.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'source3') diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 580136446b..d44d04a7a7 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -4616,9 +4616,10 @@ static void free_one_parameter_by_snum(int snum, struct parm_struct parm) } /** - * Free the allocated parameter data for a share. + * Free the allocated parameter data for a share specified + * by an snum. */ -static void free_parameters(int snum) +static void free_parameters_by_snum(int snum) { uint32_t i; @@ -4632,7 +4633,7 @@ static void free_parameters(int snum) */ static void free_global_parameters(void) { - free_parameters(GLOBAL_SECTION_SNUM); + free_parameters_by_snum(GLOBAL_SECTION_SNUM); } /*************************************************************************** @@ -5743,7 +5744,7 @@ static void free_service(struct service *pservice) DEBUG(5, ("free_service: Freeing service %s\n", pservice->szService)); - free_parameters(getservicebyname(pservice->szService, NULL)); + free_parameters_by_snum(getservicebyname(pservice->szService, NULL)); string_free(&pservice->szService); bitmap_free(pservice->copymap); -- cgit From c2bd88f145d73e9a8613d32d313954e3ecdcacd2 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 15 Dec 2008 14:38:51 +0100 Subject: s3:loadparm: add service-struct based variants of the free-parameter routines and use the abstracted free_one_parameter_common() in old free_one_parameter_by_snum() as well as in new free_one_parameter() Michael --- source3/param/loadparm.c | 53 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 7 deletions(-) (limited to 'source3') diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index d44d04a7a7..f2a39d12de 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -4585,6 +4585,51 @@ static void init_printer_values(struct service *pService) } } +/** + * Common part of freeing allocated data for one parameter. + */ +static void free_one_parameter_common(void *parm_ptr, + struct parm_struct parm) +{ + if ((parm.type == P_STRING) || + (parm.type == P_USTRING)) + { + string_free((char**)parm_ptr); + } else if (parm.type == P_LIST) { + TALLOC_FREE(*((char***)parm_ptr)); + } +} + +/** + * Free the allocated data for one parameter for a share + * given as a service struct. + */ +static void free_one_parameter(struct service *service, + struct parm_struct parm) +{ + void *parm_ptr; + + if (parm.p_class != P_LOCAL) { + return; + } + + parm_ptr = lp_local_ptr(service, parm.ptr); + + free_one_parameter_common(parm_ptr, parm); +} + +/** + * Free the allocated parameter data of a share given + * as a service struct. + */ +static void free_parameters(struct service *service) +{ + uint32_t i; + + for (i=0; parm_table[i].label; i++) { + free_one_parameter(service, parm_table[i]); + } +} /** * Free the allocated data for one parameter for a given share @@ -4606,13 +4651,7 @@ static void free_one_parameter_by_snum(int snum, struct parm_struct parm) parm_ptr = lp_local_ptr_by_snum(snum, parm.ptr); } - if ((parm.type == P_STRING) || - (parm.type == P_USTRING)) - { - string_free((char**)parm_ptr); - } else if (parm.type == P_LIST) { - TALLOC_FREE(*((char***)parm_ptr)); - } + free_one_parameter_common(parm_ptr, parm); } /** -- cgit From 51118b1974fd91d7f60ed1a68e1eb5717690362b Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 15 Dec 2008 14:42:13 +0100 Subject: s3:loadparm: fix copy service error (canonicalize_servicename: NULL source name) this was introduced by commit 3358a139d2dc77eb4c842d41722b1acc24bd2cb2. Michael --- source3/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source3') diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index f2a39d12de..9a55067b01 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -5783,7 +5783,7 @@ static void free_service(struct service *pservice) DEBUG(5, ("free_service: Freeing service %s\n", pservice->szService)); - free_parameters_by_snum(getservicebyname(pservice->szService, NULL)); + free_parameters(pservice); string_free(&pservice->szService); bitmap_free(pservice->copymap); -- cgit