[PATCH] for "testparm should check for invalid vfs objects"
Stefan Metzmacher
metze at samba.org
Tue Aug 28 07:05:54 UTC 2018
Hi Amit,
it looks much better, but we also need to check builtin modules
not only share modules.
I think we should split out the first part of vfs_init_custom(),
everything before 'handle = talloc_zero(conn, vfs_handle_struct);'
into a new function:
NTSTATUS smb_vfs_find_module(const char *vfs_object,
const struct vfs_fn_pointers **fns_ptr,
TALLOC_CTX *mem_ctx,
char **module_params_ptr);
It should be allowed to pass fns_ptr = NULL, mem_ctx = NULL and
module_params_ptr = NULL. And that's what your code should do.
You'll get extra points if you convert the code to use
'TALLOC_CTX *frame = talloc_stackframe();' and talloc_strdup(frame, ...)
instead of smb_xstrdup().
In your loop you just call
status = smb_vfs_find_module(vfs_objects[k], NULL, NULL, NULL);
vfs_init_custom() will just be:
handle = talloc_zero(conn, vfs_handle_struct);
...
handle->conn = conn;
status = smb_vfs_find_module(vfs_object,
&handle->fns,
handle,
&handle->param);
...
DLIST_ADD(conn->vfs_handles, handle);
I hope that helps!
metze
Am 28.08.2018 um 07:13 schrieb Amit:
> Dear Metze/volker,
>
> Can you please look at the patch and suggest.
>
> # cat /usr/local/samba/etc/smb.conf | grep vfs
> vfs objects = fruit1 23 worm2112
> # /usr/local/samba/bin/testparm
> Load smb config files from /usr/local/samba/etc/smb.conf
> rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
> Processing section "[myshare]"
> Loaded services file OK.
> Error loading module '/usr/local/samba/lib/vfs/fruit1.so':
> /usr/local/samba/lib/vfs/fruit1.so: cannot open shared object file: No
> such file or directory
> WARNING: Wrong vfs module: fruit1
>
> Error loading module '/usr/local/samba/lib/vfs/23.so':
> /usr/local/samba/lib/vfs/23.so: cannot open shared object file: No such
> file or directory
> WARNING: Wrong vfs module: 23
>
> Error loading module '/usr/local/samba/lib/vfs/worm2112.so':
> /usr/local/samba/lib/vfs/worm2112.so: cannot open shared object file: No
> such file or directory
> WARNING: Wrong vfs module: worm2112
>
> Server role: ROLE_STANDALONE
>
> Press enter to see a dump of your service definitions
> ^C
> #
>
> Thanks
>
> Amit
>
>
> On 08/27/2018 12:34 PM, Amit wrote:
>>
>> Hello All,
>>
>> New patch. PFA
>>
>> Thanks
>> Amit
>>
>>
>> On 08/21/2018 07:20 PM, Stefan Metzmacher wrote:
>>> Hello Amit,
>>>
>>>> I tried using getting vfs_object list as done in smbd_vfs_init(), Since
>>>> I donot have connection_struct i used #define GLOBAL_SECTION_SNUM
>>>> (-1). But values are not retrieved.
>>> Testparm should have the snum for the section it is checking.
>>> do_per_share_checks(int s), 's' is the one you need.
>>>
>>>> int test = -1, o=0;
>>>> char **vfs_objects_test = lp_vfs_objects(test);
>>>> while(vfs_objects_test[o]){
>>>> printf("vfs_objects_test=%s\n",vfs_objects_test[o]);
>>>> o++;
>>>> }
>>> Within the loop you need a logic like vfs_init_custom(), you need the
>>> logic that converts the string 'vfs_object' into module_path and
>>> module_name and then the following check:
>>>
>>> entry = vfs_find_backend_entry(module_name);
>>> if (!entry) {
>>> NTSTATUS status;
>>>
>>> status = smb_load_module("vfs", module_path);
>>> if (!NT_STATUS_IS_OK(status)) {
>>> DEBUG(0, ("error probing vfs module '%s': %s\n",
>>> module_path, nt_errstr(status)));
>>> goto fail;
>>> }
>>>
>>> entry = vfs_find_backend_entry(module_name);
>>> if (!entry) {
>>> DEBUG(0,("Can't find a vfs module
>>> [%s]\n",vfs_object));
>>> goto fail;
>>> }
>>> }
>>>
>>>> Also have do we have any module extracted using 'waf' which can refereed
>>>> as for reference.
>>> It could get a list, but only with internal modules, at buildtime.
>>>
>>> If a packager moved some modules to separate rpm/deb packages and those
>>> are not installed, the list would still be wrong.
>>>
>>> I hope that helps...
>>>
>>> metze
>>
>> --
>> Thanks
>> Amit Kumar
>> !!If you stumble, get back up.
>> What happened yesterday, no longer matters.
>> Today is another day to move closer to your GOAL!!
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20180828/1756d082/signature.sig>
More information about the samba-technical
mailing list