]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
vfs_fruit: Simplify filter_empty_rsrc_stream()
authorVolker Lendecke <vl@samba.org>
Mon, 4 Nov 2024 17:17:16 +0000 (18:17 +0100)
committerRalph Boehme <slow@samba.org>
Tue, 12 Nov 2024 12:09:34 +0000 (12:09 +0000)
Inspired by Coverity finding CID 1609584 Overflowed constant -- not
sure it fixes it.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/modules/vfs_fruit.c

index d8ad4d37a4fb27fee65184d8b48f5d6ec72ae4f4..1576ff5c2ff40df5c121d65b92d8223991c8301d 100644 (file)
@@ -413,34 +413,22 @@ static bool add_fruit_stream(TALLOC_CTX *mem_ctx, unsigned int *num_streams,
        return true;
 }
 
-static bool filter_empty_rsrc_stream(unsigned int *num_streams,
+static void filter_empty_rsrc_stream(unsigned int *num_streams,
                                     struct stream_struct **streams)
 {
-       struct stream_struct *tmp = *streams;
        unsigned int i;
 
-       if (*num_streams == 0) {
-               return true;
-       }
-
        for (i = 0; i < *num_streams; i++) {
-               if (strequal_m(tmp[i].name, AFPRESOURCE_STREAM)) {
-                       break;
-               }
-       }
+               struct stream_struct *s = &(*streams)[i];
 
-       if (i == *num_streams) {
-               return true;
-       }
-
-       if (tmp[i].size > 0) {
-               return true;
+               if (strequal_m(s->name, AFPRESOURCE_STREAM) &&
+                   (s->size == 0)) {
+                       TALLOC_FREE(s->name);
+                       ARRAY_DEL_ELEMENT(streams, i, *num_streams);
+                       *num_streams -= 1;
+                       return;
+               }
        }
-
-       TALLOC_FREE(tmp[i].name);
-       ARRAY_DEL_ELEMENT(tmp, i, *num_streams);
-       *num_streams -= 1;
-       return true;
 }
 
 static bool del_fruit_stream(TALLOC_CTX *mem_ctx, unsigned int *num_streams,
@@ -3880,13 +3868,7 @@ static NTSTATUS fruit_streaminfo_rsrc_stream(
        unsigned int *pnum_streams,
        struct stream_struct **pstreams)
 {
-       bool ok;
-
-       ok = filter_empty_rsrc_stream(pnum_streams, pstreams);
-       if (!ok) {
-               DBG_ERR("Filtering resource stream failed\n");
-               return NT_STATUS_INTERNAL_ERROR;
-       }
+       filter_empty_rsrc_stream(pnum_streams, pstreams);
        return NT_STATUS_OK;
 }
 
@@ -3898,13 +3880,7 @@ static NTSTATUS fruit_streaminfo_rsrc_xattr(
        unsigned int *pnum_streams,
        struct stream_struct **pstreams)
 {
-       bool ok;
-
-       ok = filter_empty_rsrc_stream(pnum_streams, pstreams);
-       if (!ok) {
-               DBG_ERR("Filtering resource stream failed\n");
-               return NT_STATUS_INTERNAL_ERROR;
-       }
+       filter_empty_rsrc_stream(pnum_streams, pstreams);
        return NT_STATUS_OK;
 }