1. Си / Говнокод #18472

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    int do_execve(const char *filename,
    	const char __user *const __user *__argv,
    	const char __user *const __user *__envp,
    	struct pt_regs *regs)
    {
    	struct user_arg_ptr argv = { .ptr.native = __argv };
    	struct user_arg_ptr envp = { .ptr.native = __envp };
        /* exec mt_debug*/
        int ret;
        int retry = 3;
        do{
            ret = do_execve_common(filename, argv, envp, regs);
            printk(KERN_DEBUG"[exec] %s(%d)\n", filename, retry);
        }while( -999 == ret && retry-- > 0);
    	return ret;
    }

    Ядро от MTK. Они логгируют каждый exec на уровне ядра.

    Запостил: Azq2, 12 Июля 2015

    Комментарии (4) RSS

    • Ещё больше смущает странная проверка ret, это же похоже код, который вернула запускаемая программа.
      Ответить
    • > логгируют каждый exec
      В общем-то не так и страшно. Подумаешь строчку в кольцевой буфер добавили. На фоне самого exec()'а, имхо, фигня.

      > код, который вернула
      А вот это интересней. Это однозначно не код возврата запускаемой программы. Надо смотреть, в каком случае do_execve_common() может вернуть ошибку -999. Тогда будет понятнее, почему они решили делать повторы. Судя по ебануто-безымянному -999 это какая-то чисто медиатековская ошибка, которой в нормальных ядрах нету.

      P.S. Где исходники целиком можно глянуть?
      Ответить
    • Да, это жёппа. На mtk невозможно вообще что-либо разрабатывать из-за лютого спама во все щел^Wлоги. Высирает по гигабайту кирпичей в час.
      Ответить

    Добавить комментарий