What's wrong with this piece of code from source3/modules/vfs_acl_xattr.c around like 126 or so?

Richard Sharpe realrichardsharpe at gmail.com
Tue May 15 09:43:14 MDT 2012


On Tue, May 15, 2012 at 7:00 AM, Richard Sharpe > These are the
changes I am thinking of. They are building now and if
> they build cleanly, I will commit them later today (after further
> tests at work.)
>
> diff --git a/source3/modules/vfs_acl_common.c b/source3/modules/vfs_acl_common.c
> index 241bc8f..221b43f 100644
> --- a/source3/modules/vfs_acl_common.c
> +++ b/source3/modules/vfs_acl_common.c
> @@ -592,10 +592,13 @@ static NTSTATUS fset_nt_acl_common(vfs_handle_struct *hand
>                NDR_PRINT_DEBUG(security_descriptor,
>                        discard_const_p(struct security_descriptor, psd));
>        }
> +       /*
> +        * Perhaps create_acl_blob should have a status return as well
> +        */
>        create_acl_blob(psd, &blob, XATTR_SD_HASH_TYPE_SHA256, hash);
> -       store_acl_blob_fsp(handle, fsp, &blob);
> +       status = store_acl_blob_fsp(handle, fsp, &blob);
>
> -       return NT_STATUS_OK;
> +       return status;
>  }
>
>  static int acl_common_remove_object(vfs_handle_struct *handle,
> diff --git a/source3/modules/vfs_acl_xattr.c b/source3/modules/vfs_acl_xattr.c
> index 5653657..17d1a8f 100644
> --- a/source3/modules/vfs_acl_xattr.c
> +++ b/source3/modules/vfs_acl_xattr.c
> @@ -119,12 +119,11 @@ static NTSTATUS store_acl_blob_fsp(vfs_handle_struct *hand
>        }
>        unbecome_root();
>        if (ret) {
> -               errno = saved_errno;
>                DEBUG(5, ("store_acl_blob_fsp: setting attr failed for file %s"
>                        "with error %s\n",
>                        fsp_str_dbg(fsp),
> -                       strerror(errno) ));
> -               return map_nt_error_from_unix(errno);
> +                       strerror(saved_errno) ));
> +               return map_nt_error_from_unix(saved_errno);
>        }
>        return NT_STATUS_OK;
>  }

OK, a better set for modules/vfs_acl_common.c:

--- modules/vfs_acl_common.c    2012-05-15 08:41:24.011062529 -0700
+++ modules/vfs_acl_common.c.new        2012-05-15 08:40:42.479665488 -0700
@@ -645,10 +645,13 @@
                NDR_PRINT_DEBUG(security_descriptor,
                        CONST_DISCARD(struct security_descriptor *,psd));
        }
-       create_acl_blob(psd, &blob, XATTR_SD_HASH_TYPE_SHA256, hash);
-       store_acl_blob_fsp(handle, fsp, &blob);
+       status = create_acl_blob(psd, &blob, XATTR_SD_HASH_TYPE_SHA256, hash);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
+       status = store_acl_blob_fsp(handle, fsp, &blob);

-       return NT_STATUS_OK;
+       return status;
 }


-- 
Regards,
Richard Sharpe
(何以解憂?唯有杜康。--曹操)


More information about the samba-technical mailing list