On Wed, Dec 04, 2024 at 12:00:00AM +0530, Ayush Singh wrote: > Allow specifying string length to `fdt_find_string_`. > fdt_find_string_() now internally uses this function. > > Signed-off-by: Ayush Singh <ayush@xxxxxxxxxxxxxxx> Reviewed-by: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx> > --- > libfdt/fdt.c | 8 ++++---- > libfdt/libfdt_internal.h | 11 ++++++++++- > 2 files changed, 14 insertions(+), 5 deletions(-) > > diff --git a/libfdt/fdt.c b/libfdt/fdt.c > index 20c6415b9ced113d9fcce25b69007a6b0f9e68e7..95f644c31f9431eb597b6f683741ff9be375cebf 100644 > --- a/libfdt/fdt.c > +++ b/libfdt/fdt.c > @@ -312,14 +312,14 @@ int fdt_next_subnode(const void *fdt, int offset) > return offset; > } > > -const char *fdt_find_string_(const char *strtab, int tabsize, const char *s) > +const char *fdt_find_string_len_(const char *strtab, int tabsize, const char *s, > + int slen) > { > - int len = strlen(s) + 1; > - const char *last = strtab + tabsize - len; > + const char *last = strtab + tabsize - (slen + 1); > const char *p; > > for (p = strtab; p <= last; p++) > - if (memcmp(p, s, len) == 0) > + if (memcmp(p, s, slen) == 0 && p[slen] == '\0') > return p; > return NULL; > } > diff --git a/libfdt/libfdt_internal.h b/libfdt/libfdt_internal.h > index 16bda1906a7b335519b9f748d1be6110de551e79..1fd35f364e9af15df19ae5b8b7231584804e96a4 100644 > --- a/libfdt/libfdt_internal.h > +++ b/libfdt/libfdt_internal.h > @@ -6,6 +6,7 @@ > * Copyright (C) 2006 David Gibson, IBM Corporation. > */ > #include <fdt.h> > +#include <string.h> > > #define FDT_ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) > #define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE)) > @@ -20,7 +21,15 @@ int32_t fdt_ro_probe_(const void *fdt); > > int fdt_check_node_offset_(const void *fdt, int offset); > int fdt_check_prop_offset_(const void *fdt, int offset); > -const char *fdt_find_string_(const char *strtab, int tabsize, const char *s); > + > +const char *fdt_find_string_len_(const char *strtab, int tabsize, const char *s, > + int s_len); > +static inline const char *fdt_find_string_(const char *strtab, int tabsize, > + const char *s) > +{ > + return fdt_find_string_len_(strtab, tabsize, s, strlen(s)); > +} > + > int fdt_node_end_offset_(void *fdt, int nodeoffset); > > static inline const void *fdt_offset_ptr_(const void *fdt, int offset) > -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson
Attachment:
signature.asc
Description: PGP signature