lib/param: fix usage of 'write list = +Group'
Stefan (metze) Metzmacher
metze at samba.org
Sat Aug 25 01:15:12 MDT 2012
Hi Andrew,
>> - Log -----------------------------------------------------------------
>> commit f83521a4ca26c8b14af1c407c49426d8dd8179f7
>> Author: Stefan Metzmacher <metze at samba.org>
>> Date: Thu Aug 23 15:32:05 2012 +0200
>>
>> lib/param: fix usage of 'write list = +Group'
>>
>> metze
>>
>> Autobuild-User(master): Björn Jacke <bj at sernet.de>
>> Autobuild-Date(master): Fri Aug 24 11:28:17 CEST 2012 on sn-devel-104
>>
>> -----------------------------------------------------------------------
>>
>> Summary of changes:
>> lib/param/loadparm.c | 10 ++++++++--
>> 1 files changed, 8 insertions(+), 2 deletions(-)
>>
>>
>> Changeset truncated at 500 lines:
>>
>> diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
>> index 4751a06..3814087 100644
>> --- a/lib/param/loadparm.c
>> +++ b/lib/param/loadparm.c
>> @@ -1355,13 +1355,19 @@ static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr,
>> char **new_list = str_list_make(mem_ctx,
>> pszParmValue, NULL);
>> for (i=0; new_list[i]; i++) {
>> - if (new_list[i][0] == '+' && new_list[i][1]) {
>> + if (*(const char ***)parm_ptr != NULL &&
>> + new_list[i][0] == '+' &&
>> + new_list[i][1])
>> + {
>> if (!str_list_check(*(const char ***)parm_ptr,
>> &new_list[i][1])) {
>> *(const char ***)parm_ptr = str_list_add(*(const char ***)parm_ptr,
>> &new_list[i][1]);
>> }
>> - } else if (new_list[i][0] == '-' && new_list[i][1]) {
>> + } else if (*(const char ***)parm_ptr != NULL &&
>> + new_list[i][0] == '-' &&
>> + new_list[i][1])
>> + {
>> str_list_remove(*(const char ***)parm_ptr,
>> &new_list[i][1]);
>> } else {
>
> This doesn't look quite right, because in other lists (such as server
> services) adding "+smb" to the empty list should give us "smb".
Does that ever happen, in that case we don't have an empty list
typically.
> What I think we need to do is separate lists further into:
> - USER_LIST
> - CMD_LIST
> - LIST
>
> CMD_LIST and USER_LIST would be very similar, but would separate tokens
> with a comma ',' and both would not have the magic +/- behaviour.
I think we should give a special meaning to the +/- magic
and keep LIST simple. (But at least everything seems to work in the
current code)
BTW: I first thought of such an approach, but gladly found such a simple
patch
to fix the segfault.
metze
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20120825/5097cf5c/attachment.pgp>
More information about the samba-technical
mailing list