Paul Mackerras wrote: > Srinivasa Ds writes: > >> + } else { \ >> + char dot_name[KSYM_NAME_LEN+1]; \ >> + dot_name[0] = '.'; \ >> + dot_name[1] = '\0'; \ >> + strncat(dot_name, name, KSYM_NAME_LEN); \ > > Assuming the kernel strncat works like the userspace one does, there > is a possibility that dot_name[] won't be properly null-terminated > here. If strlen(name) >= KSYM_NAME_LEN-1, then strncat will set > dot_name[KSYM_NAME_LEN-1] to something non-null and won't touch > dot_name[KSYM_NAME_LEN].
Irrespective of length of the string, kernel implementation of strncat(lib/string.c) ensures that last character of string is set to null. So dot_name[] is always null terminated. ======================== char *strncat(char *dest, const char *src, size_t count) { char *tmp = dest; if (count) { while (*dest) dest++; while ((*dest++ = *src++) != 0) { if (--count == 0) { *dest = '\0'; break; } } } return tmp; } EXPORT_SYMBOL(strncat); =============================== Is this OK then ?? Thanks Srinivasa DS > > Paul. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/