Есть ли функция C, такая как sprintf в ядре Linux?

есть ли функция как sprintf() в ядре Linux (как printf() ->printk())?

4 ответов


да. 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() сам по себе склонен к переполнению буфера. переполнение буфера сертификата, Яблоко, etc


да, просто включите linux / kernel.h


да, есть проверить здесь

вы можете использовать grep, чтобы узнать, находится ли он в исходном коде ядра


запуск сбоя в ядре live 2.6 подтверждает, что sprintf() определен и где он определен.

авария> sym sprintf

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