web-dev-qa-db-fra.com

Y at-il une fonction C comme sprintf dans le noyau Linux?

Existe-t-il une fonction comme sprintf() dans le noyau Linux (comme printf()-> printk())?

19
Alex

oui. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/lib/vsprintf.c#n1828

int snprintf(char *buf, size_t size, const char *fmt, ...)
{
    va_list args;
    int i;

    va_start(args, fmt);
    i = vsnprintf(buf, size, fmt, args);
    va_end(args);

    return i;
}
EXPORT_SYMBOL(snprintf);

sprintf() par lui-même est sujet aux débordements de mémoire tampon. CERT débordement de mémoire tampon , Apple , etc.

19
Dmitry Zagorulkin

Oui, incluez simplement linux/kernel.h

1
stackoverflow

L'exécution d'un crash sur un noyau 2.6 en cours confirme que sprintf () est défini et à quel emplacement.

crash> sym sprintf

ffffffff81267ba0 (T) sprintf ../debug/kernel-2.6.39/linux-2.6.39-400.210.2.el6uek/lib/vsprintf.c: 1442

0
clearlight

oui il y a check out ici par exemple 

vous pouvez utiliser grep pour voir s'il est dans le code source du noyau

0
0x90