diff mbox series

[RFC,v2,16/27] libselinux: update string_to_mode()

Message ID 20230814132025.45364-17-cgzones@googlemail.com (mailing list archive)
State Accepted
Commit 0b93e30c93ef
Delegated to: Petr Lautrbach
Headers show
Series libselinux: rework selabel_file(5) database | expand

Commit Message

Christian Göttsche Aug. 14, 2023, 1:20 p.m. UTC
Drop parameter NULL check since the only caller does a NULL check on the
argument.

Avoid strlen(3) call by comparing by hand.

Drop unreachable return statement.

Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
---
 libselinux/src/label_file.h | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

Comments

James Carter Oct. 10, 2023, 3:18 p.m. UTC | #1
On Mon, Aug 14, 2023 at 9:41 AM Christian Göttsche
<cgzones@googlemail.com> wrote:
>
> Drop parameter NULL check since the only caller does a NULL check on the
> argument.
>
> Avoid strlen(3) call by comparing by hand.
>
> Drop unreachable return statement.
>
> Signed-off-by: Christian Göttsche <cgzones@googlemail.com>

Acked-by: James Carter <jwcart2@gmail.com>

> ---
>  libselinux/src/label_file.h | 15 ++++-----------
>  1 file changed, 4 insertions(+), 11 deletions(-)
>
> diff --git a/libselinux/src/label_file.h b/libselinux/src/label_file.h
> index 190bc175..1363c83c 100644
> --- a/libselinux/src/label_file.h
> +++ b/libselinux/src/label_file.h
> @@ -97,15 +97,10 @@ struct saved_data {
>         struct selabel_sub *subs;
>  };
>
> -static inline mode_t string_to_mode(char *mode)
> +static inline mode_t string_to_mode(const char *mode)
>  {
> -       size_t len;
> -
> -       if (!mode)
> -               return 0;
> -       len = strlen(mode);
> -       if (mode[0] != '-' || len != 2)
> -               return -1;
> +       if (mode[0] != '-' || mode[1] == '\0' || mode[2] != '\0')
> +               return (mode_t)-1;
>         switch (mode[1]) {
>         case 'b':
>                 return S_IFBLK;
> @@ -122,10 +117,8 @@ static inline mode_t string_to_mode(char *mode)
>         case '-':
>                 return S_IFREG;
>         default:
> -               return -1;
> +               return (mode_t)-1;
>         }
> -       /* impossible to get here */
> -       return 0;
>  }
>
>  static inline int grow_specs(struct saved_data *data)
> --
> 2.40.1
>
James Carter Oct. 12, 2023, 5:55 p.m. UTC | #2
On Tue, Oct 10, 2023 at 11:18 AM James Carter <jwcart2@gmail.com> wrote:
>
> On Mon, Aug 14, 2023 at 9:41 AM Christian Göttsche
> <cgzones@googlemail.com> wrote:
> >
> > Drop parameter NULL check since the only caller does a NULL check on the
> > argument.
> >
> > Avoid strlen(3) call by comparing by hand.
> >
> > Drop unreachable return statement.
> >
> > Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
>
> Acked-by: James Carter <jwcart2@gmail.com>
>
Merged.
Thanks,
Jim

> > ---
> >  libselinux/src/label_file.h | 15 ++++-----------
> >  1 file changed, 4 insertions(+), 11 deletions(-)
> >
> > diff --git a/libselinux/src/label_file.h b/libselinux/src/label_file.h
> > index 190bc175..1363c83c 100644
> > --- a/libselinux/src/label_file.h
> > +++ b/libselinux/src/label_file.h
> > @@ -97,15 +97,10 @@ struct saved_data {
> >         struct selabel_sub *subs;
> >  };
> >
> > -static inline mode_t string_to_mode(char *mode)
> > +static inline mode_t string_to_mode(const char *mode)
> >  {
> > -       size_t len;
> > -
> > -       if (!mode)
> > -               return 0;
> > -       len = strlen(mode);
> > -       if (mode[0] != '-' || len != 2)
> > -               return -1;
> > +       if (mode[0] != '-' || mode[1] == '\0' || mode[2] != '\0')
> > +               return (mode_t)-1;
> >         switch (mode[1]) {
> >         case 'b':
> >                 return S_IFBLK;
> > @@ -122,10 +117,8 @@ static inline mode_t string_to_mode(char *mode)
> >         case '-':
> >                 return S_IFREG;
> >         default:
> > -               return -1;
> > +               return (mode_t)-1;
> >         }
> > -       /* impossible to get here */
> > -       return 0;
> >  }
> >
> >  static inline int grow_specs(struct saved_data *data)
> > --
> > 2.40.1
> >
diff mbox series

Patch

diff --git a/libselinux/src/label_file.h b/libselinux/src/label_file.h
index 190bc175..1363c83c 100644
--- a/libselinux/src/label_file.h
+++ b/libselinux/src/label_file.h
@@ -97,15 +97,10 @@  struct saved_data {
 	struct selabel_sub *subs;
 };
 
-static inline mode_t string_to_mode(char *mode)
+static inline mode_t string_to_mode(const char *mode)
 {
-	size_t len;
-
-	if (!mode)
-		return 0;
-	len = strlen(mode);
-	if (mode[0] != '-' || len != 2)
-		return -1;
+	if (mode[0] != '-' || mode[1] == '\0' || mode[2] != '\0')
+		return (mode_t)-1;
 	switch (mode[1]) {
 	case 'b':
 		return S_IFBLK;
@@ -122,10 +117,8 @@  static inline mode_t string_to_mode(char *mode)
 	case '-':
 		return S_IFREG;
 	default:
-		return -1;
+		return (mode_t)-1;
 	}
-	/* impossible to get here */
-	return 0;
 }
 
 static inline int grow_specs(struct saved_data *data)