change_notify_create seems to want to ignore the status from SMB_VFS_NOTIFY_WATCH but it can leak through

Richard Sharpe realrichardsharpe at
Thu Dec 5 10:27:03 MST 2013

Hi folks,

In source3/smbd/notify.c:change_notify_create we see this:

        if (fsp->conn->sconn->sys_notify_ctx != NULL) {
                void *sys_notify_handle = NULL;

                status = SMB_VFS_NOTIFY_WATCH(
                        fsp->conn, fsp->conn->sconn->sys_notify_ctx,
                        fullpath, &filter, &subdir_filter,
                        sys_notify_callback, fsp, &sys_notify_handle);

                if (NT_STATUS_IS_OK(status)) {
                        talloc_steal(fsp->notify, sys_notify_handle);

        if ((filter != 0) || (subdir_filter != 0)) {
                status = notify_add(fsp->conn->sconn->notify_ctx,
                                    fullpath, filter, subdir_filter,
                                    notify_callback, fsp);
        return status;

In earlier versions there was an explicit comment about ignoring the
return from SMB_VFS_NOTIFY_WATCH (or sys_notify_watch), however, if
filter == 0 and subdir_filter == 0 the status from
SMB_VFS_NOTIFY_WATCH can leak through.

Richard Sharpe

More information about the samba-technical mailing list