On Thu, Aug 14, 2008 at 12:43:48PM -0500, Scott Wood wrote: > On Thu, Aug 14, 2008 at 08:28:19AM -0500, Kumar Gala wrote: > > - if (*path != '/') > > - return -FDT_ERR_BADPATH; > > + /* see if we have an alias */ > > + if (*path != '/') { > > + const char *q; > > + int aliasoffset = fdt_path_offset(fdt, "/aliases"); > > + > > + if (aliasoffset < 0) > > + return -FDT_ERR_BADPATH; > > + > > + q = strchr(path, '/'); > > + if (!q) > > + q = end; > > + > > + p = fdt_getprop_namelen(fdt, aliasoffset, path, q - p, NULL); > > + if (!p) > > + return -FDT_ERR_BADPATH; > > + offset = fdt_path_offset(fdt, p); > > + > > + p = q; > > + } > > Can we limit the recursion depth to avoid falling off the stack if an > alias points to itself? Or if aliases pointing to aliases are > disallowed, check for a leading '/' before recursively calling > fdt_path_offset.
Hmm.. my reading of 1275 says that an alias pointing to another alias is not permitted, but I'm not terribly confident I'm not misreading it. Segher, do you know whether this is allowed? If that's the case then, yes, we should not recurse if the alias value doesn't start with a /. In fact, if I factor out a fdt_get_alias() function, it should probably check the alias and return an error if it's not an absolute path. -- David Gibson | 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 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev