Няшная / Говнокод #7089 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
bool aiccu_os_install(void)
{
    /* Check if IPv6 support is available */
    if (access("/proc/net/if_inet6", F_OK))
    {
        /* Doing the modprobe doesn't guarantee success unfortunately */
        (void)system("modprobe -q ipv6 2>/dev/null >/dev/null");

        /* Thus test it again */
        if (access("/proc/net/if_inet6", F_OK))
        {
            dolog(LOG_ERR, "No IPv6 Stack found! Please check your kernel and module configuration\n");
            return false;
        }
    }

    /* Try to load modules (SIT tunnel, TUN/TAP)
     * They can be kernel builtins and there is no easy
     * way to check if they are loaded/built except for
     * trying to use them and fail at that point
     */
    (void)system("modprobe -q sit 2>/dev/null >/dev/null");
    (void)system("modprobe -q tun 2>/dev/null >/dev/null");

    return true;
}

Запостил: raorn raorn, (Updated )

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

    • Из /dev/null в /dev/null, может быть? Лично я не знаю, зачем это тут и для чего сию конструкцию можно использовать...
      Ответить
      • Это чтобы и stdout и stderr в null слить, правильнее писать &>/dev/null
        Ответить
        • &>/dev/null это расширение bash и работает не везде (в дебиане, например использует dash для всего неинтеррактивного).
          Ответить
    • Мне кажется должно быть что то вроде:
      bool aiccu_os_install(void)
      {
      	return !system("modprobe -q ipv6 &>/dev/null") && 
      	  !system("modprobe -q sit &>/dev/null") && 
      	  !system("modprobe -q tun &>/dev/null");
      }


      Но могу ошибаться, не пробовал использовать.
      Ответить
            • Как вариант вполне покатит. Правда, не вспомню, потянет ли system конвейерное выполнение или нет.
              Ответить
              • конвеером шел занимается

                modprobe может обламаться, если не сомжет найти нужные модули, представлябющие нужные модулю символы,он же по сути граф зависимостей строит
                Ответить
                • Глянул про system: Calls the host environment's command processor.

                  Так что всё норм, system позовёт шелл, он символы конвейера распарсит.

                  Вот всякие exec и spawn (не помню их сигнатур), которые напрямую вызывают бинарник, обломаются, конечно, им нужно явно ссылку на sh подставлять.
                  Ответить
                  • да, ты прав: `sh` должен быть
                    https://pubs.opengroup.org/onlinepubs/9799919799/functions/system.html

                    брать путь к ш реализаиця должна через confstr, но примерно во всех юниксах там почти всегда будет /bin/sh (но в теории может и не)


                    там даже более того написино

                    >>>
                    Finally, POSIX.1-2024 requires the command to be interpreted as in the shell command language defined in the Shell and Utilities volume of POSIX.1-2024.
                    >>>
                    Ответить
                    • Вот, там даже рекомендуют реализовать system так, чтобы она под капотом выполняла
                      execl(<shell path>, "sh", "-c", "--", command, (char *)0);

                      Либо, чтобы выполняла свой код, но результат был такой же, как после этого вызова.

                      Вот в чём отличие system от execl.
                      Ответить
  • КKCTIXIEHCPIYZDIGKKZCCDLETGKZWDLMLYCGKHSMJEYYQHELROEFCSPVMJYJPXOQIWTRQCPGXVOPURANNGTJWURZROJQBIWOLBPJRCUMTBBKFQXDJECPGKTVEQNJDUKNZTRHQISSQXVEICYUJQRDPSWENDESSKSEZXVBRMWHEDTLIVCSMSLRXWQYFOQGCSNSJOSMSMNLCMGPIKNKZPFPERPSONRMJPXNJTNLYKOTTJFRGGIEPCFTZZINCEQCOJADVIIJKFVXURMKZSYNQBYNOAFTNPQFETOFFLCEVZMWNOQPTZMFMMVWBOQWOWUXMUNZHQFGWENZCSDBVSIUKUHLCXGBVHHCAUVEDZSNVYOJVMNJACFWNAFAXDVEJKPHLMSSMHRSRUEUFUWQDDPVIQQAMOEVQFRRHMEISHISAEFSTRUBUBAGNITTJNFJEIFYKVAHZUSHPDNZQAQQCNYCACZIQSYQZKWNGNEAXKQCETQHDSPEOBNBPCAOMOWZBBKMPJZJSVC
    Ответить
  • э"V"M!H)K"U$X OR(S!I H!S.W:D(J$FS(G:N!T(U)T!MI$B,B,F W,L"N,M$Z$H.E!DM"W)B.H$L)S,S$E,C.E.BS NF:O"C L$W$KV)R(R,U.GA?L)H:L)Q,L.N,UM?H!F"F,F!R(VU!T)K(W.T)U.H:L(R$H$O?L?PQ$L U(R,T Q(M?V(K?I?F!PX.K:J)J.O Y(B Y(O"BT.F)V?M W!K!E,V!F"Q"P)Q)Y G Q R.I.R)H E,F.N,N$J F,H(L$E W.I$O:V)U$N(TD$T(P?N)N(Q,L YY W$S:I$C?ST.B?X.L L"J,G$T!X!A?K!H!P H(P$A D TX.D?V?M(Y U"J J!V!LY(F?R L?K"K,T.H"Y?K.M:X?S"U.Z(T(QI.O)P?F K"K,Z$H!YU(XS:H$IR)K?J)Z:C"Z,X!W U:H:I,M.T.D)X(L$U?U,E$A.W B)K)EC$E(P)M"Q.B.Q?A:O C(Q$C?M"N,E.O!N(F,G"W"T.VЮTFWQHIHNUPIVHBNWNCNLYTVPSFIBVIQATCPWBTAZHURGOADBCYWWJMALHZIWNJOAQAEJKJPNDSJVZMXFIYVXCUBKXIYEYCKQZQSYYKMWRUXYZJVALICMNJXPTSWHTPHBXXMGCLXABPMXUNXRWSBDUNP
    Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8