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

    +1

    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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    #include <stdio.h>
    
    #define new(class) _##class##_##new
    #define impl(class, method) _##class##_##method
    struct Calculate
    {
    	int(*getOne)(struct Calculate*);
    };
    
    int impl(Calculate, getOne)(struct Calculate* this) { return 1; }
    void* new(Calculate)(void)
    {
    	struct Calculate* class = malloc(sizeof(struct Calculate));
    	class->getOne = impl(Calculate, getOne);
    	return class;
    }
    
    struct CalculateProxy
    {
    	struct Calculate;
    };
    
    int impl(CalculateProxy, getOne)(struct Calculate* this)
    {
    	printf("Method call!\n");
    	return impl(Calculate, getOne)(this);
    }
    
    void* new(CalculateProxy)(void)
    {
    	struct CalculateProxy* class = malloc(sizeof(struct CalculateProxy));
    	class->getOne = impl(CalculateProxy, getOne);
    	return class;
    }
    
    int main(void)
    {
    	struct Calculate* calc = new(CalculateProxy)();
    	printf("%X!\n", calc->getOne(calc));
    }

    жавашок попросил реализовать паттерн прокси на Си

    digitalEugene, 06 Ноября 2021

    Комментарии (149)
  2. C++ / Говнокод #27796

    −2

    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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    #include <iostream>
    #include <cmath>
    #include <signal.h>
    
    #define lovu struct
    #define cpp ptrdiff_t
    struct forever{};
    
    lovu forever hactehbka(void) {return {};}
    int love(void) {return 0;}
    void bacbka(void) {}
    auto bormand = (cpp(hactehbka) + cpp(bacbka)) != cpp(love);
    int main(void)
    {
        if(bormand)
            kill(bormand, SIGINT);
    
        auto sad = cpp(bacbka) - cpp(love),
            chance = cpp(love) - cpp(hactehbka),
            never = cpp(bacbka) - cpp(hactehbka);
        auto usocute = [chance, never, sad](void) -> void
        {
            putchar(sad * (chance - never / chance / 2) - sad / chance);
            putchar(sad * (chance - never / chance / 2) + sad / chance);
        };
        auto mydear = [chance, sad, never](void) -> void
        {
            putchar(sad * chance / (never / chance) + never / chance / 2 + (never + cpp(love) / (never / chance) - cpp(hactehbka) / (never / chance)) + never - (never / chance * 1.5));
            putchar(9 * chance + never / chance);
            putchar(std::abs(cpp(signal) - cpp(hactehbka) + chance * 2 + never * 3 + sad - 9) / std::pow(never / chance, 3));
        };
    
        putchar(sad * (chance - never / chance / 2));
        usocute();
        putchar(never * (chance - never / chance) + sad - (sad / (cpp(love) - cpp(hactehbka))) * (never / chance * 1.5));
        mydear();
        putchar(chance * 10 + never / chance);
        usocute();
        putchar((chance + never / chance / 2) * 10 + (never / chance) * 2);
        auto ohyes = 69.8886;
        putchar(ohyes);
        putchar(chance * 10 + never / chance);
        putchar(chance + never / chance / 2);
        putchar(never * (chance - never / chance) + sad - (sad / (cpp(love) - cpp(hactehbka))) * (never / chance * 1.5));
        mydear();
        for(auto&& c : {1.5f, 3.f, 6.5f})
            putchar(ohyes + M_PI + never / chance * c);
        putchar(ohyes);
        putchar(chance + never / chance * 1.5);
        return 0;
    }

    BACbKA, 05 Ноября 2021

    Комментарии (3)
  3. JavaScript / Говнокод #27795

    +1

    1. 1
    npm install

    очередной npm пакет с трояном

    https://www.bleepingcomputer.com/news/security/popular-coa-npm-library-hijacked-to-steal-user-passwords/

    Her, 05 Ноября 2021

    Комментарии (10)
  4. C++ / Говнокод #27794

    −1

    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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    #include <cstdio>
    
    int main(void)
    {
        static char data[] = "sosu hui\n";
        __asm
        {
            mov eax, 0
            ploop:
                mov bl, [data + eax]
                push eax
                push bx
                call putchar
                pop bx
                pop eax
                inc eax
                cmp bl, 0
                jnz ploop
    
        }
    
        return 0;
    }

    digitalEugene, 05 Ноября 2021

    Комментарии (13)
  5. Pascal / Говнокод #27793

    −2

    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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    // Подгрузка аватаров пользователей.
        Bmp:=TBitMap.Create; // Нет более изящного спооба узнать тип изображения, не колупаясь в заголовках. Расширение файлов картинок зачастую фиктивное.
        try                  // Зная, что ава может быть только двух типов - jpg и png, я решил пойти конём.
          Bmp.PixelFormat:=pf32Bit;
          Bmp.Width:=16;
          Bmp.Height:=16;
          ImgConv:=True;
          Png:=TPngObject.Create;
          try
            try
              Comm.RawAvatar.Position:=0;
              Png.LoadFromStream(Comm.RawAvatar);
              Bmp.Canvas.StretchDraw(Bmp.Canvas.ClipRect, Png);
            except
              ImgConv:=False;     // Ошибка конвертирования. Не совпал формат - идем дальше, пробуем jpg...
            end;
          finally
            Png.Free;             // нет смысла раскручивать стек, ибо исключение в любом случае отловится try..except
          end;
          if not ImgConv then
          begin
            Jpg:=TJPEGImage.Create;
            try
              try
                Comm.RawAvatar.Position:=0;
                Jpg.LoadFromStream(Comm.RawAvatar);
                Bmp.Canvas.StretchDraw(Bmp.Canvas.ClipRect, Jpg);
              except
              end;
            finally
              Jpg.Free;
            end;
          end;
          CommentList.Items[I].ImageIndex:=Images.AddMasked(Bmp, clWhite);
        finally
          Bmp.Free;
        end;
      end;

    "Тут всюду густая вонь, то жаркая и приятная, то теплая и противная, но одинаково волнующая, особая, пароходная, мешающаяся с морской свежестью"

    @ Бунин.

    Теперь минусатор умеет подгружать авы.
    https://dropmefiles.com/USQKW

    Support, 05 Ноября 2021

    Комментарии (1)
  6. Си / Говнокод #27792

    0

    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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    // https://github.com/dxFeed/dxfeed-c-api/blob/8f24055298c9751344db72da03ab8eb37dfeb6a5/src/DXAlgorithms.h#L63
    
    #define CHECKED_CALL(func, param) \
    	do { \
    		if (!func(param)) { \
    			return false; \
    		} \
    	} while (false)
    
    #define CHECKED_CALL_0(func) \
    	do { \
    		if (!func()) { \
    			return false; \
    		} \
    	} while (false)
    
    #define CHECKED_CALL_1(func, param1) \
    	do { \
    		if (!func(param1)) { \
    			return false; \
    		} \
    	} while (false)
    
    #define CHECKED_CALL_2(func, param1, param2) \
    	do { \
    		if (!func(param1, param2)) { \
    			return false; \
    		} \
    	} while (false)
    
    #define CHECKED_CALL_3(func, param1, param2, param3) \
    	do { \
    		if (!func(param1, param2, param3)) { \
    			return false; \
    		} \
    	} while (false)
    
    #define CHECKED_CALL_4(func, param1, param2, param3, param4) \
    	do { \
    		if (!func(param1, param2, param3, param4)) { \
    			return false; \
    		} \
    	} while (false)
    
    #define CHECKED_CALL_5(func, param1, param2, param3, param4, param5) \
    	do { \
    		if (!func(param1, param2, param3, param4, param5)) { \
    			return false; \
    		} \
    	} while (false)

    Мокроебства

    j123123, 05 Ноября 2021

    Комментарии (11)
  7. C++ / Говнокод #27787

    +1

    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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    #include <string>
    #include <type_traits>
    #include <iostream>
    
    template<int N> struct tag {};
    
    template<typename T, int N>
    struct loophole_t
    {
        friend auto loophole(tag<N>) { return T{}; };
    };
    
    #define BA(c) auto loophole(tag< (c) >);
    #define Cb(c) BA(c) BA(c+1) BA(c+2) BA(c+3) BA(c+4)
    #define KA(c) Cb(c) Cb(c+5) Cb(c+10) Cb(c+15) Cb(c+20)
    #define ZDES(c) KA(c) KA(c+20) KA(c+40) KA(c+60) KA(c+80)
    #define BACbKAZDES ZDES(0) ZDES(80) ZDES(160) ZDES(240) ZDES(300)
    
    BACbKAZDES
    
    template<int I>
    struct wrp
    {
        int a;
    };
    int main(void)
    {
        sizeof(loophole_t<wrp<67>, 0>);
        sizeof(loophole_t<wrp<66>, 1>);
        sizeof(loophole_t<wrp<68>, 2>);
        sizeof(loophole_t<wrp<99>, 3>);
        sizeof(loophole_t<wrp<76>, 4>);
        sizeof(loophole_t<wrp<66>, 5>);
        sizeof(loophole_t<wrp<33>, 6>);
        sizeof(loophole_t<wrp<73>, 7>);
        sizeof(loophole_t<wrp<66>, 8>);
        sizeof(loophole_t<wrp<68>, 9>);
        sizeof(loophole_t<wrp<85>, 10>);
        sizeof(loophole_t<wrp<70>, 11>);
        sizeof(loophole_t<wrp<79>, 12>);
        sizeof(loophole_t<wrp<99>, 13>);
        sizeof(loophole_t<wrp<76>, 14>);
        sizeof(loophole_t<wrp<66>, 15>);
        sizeof(loophole_t<wrp<33>, 16>);
        sizeof(loophole_t<wrp<109>, 17>);
        sizeof(loophole_t<wrp<112>, 18>);
        sizeof(loophole_t<wrp<119>, 19>);
        sizeof(loophole_t<wrp<102>, 20>);
    
        std::string nactenbka;
    #define L(c, i) if(std::is_same< wrp< (c) >, decltype( loophole(tag< (i) >{}) )>::value) nactenbka.push_back((char)( c-1 ) );
    #define O(c, i) L(c, i) L(c+1, i) L(c+2, i) L(c+3, i) L(c+4, i)
    #define V(c, i) O(c, i) O(c+5, i) O(c+10,i) O(c+15,i) O(c+20,i)
    #define E(c, i) V(c, i) V(c+20,i) V(c+40,i) V(c+60,i) V(c+80,i)
    #define LOVE(c, i) E(c, i) V(c+80, i) V(c+100, i)
    
    #define FORE(i) LOVE(0, i)
    #define VER(i) FORE(i) FORE(i+1) FORE(i+2) FORE(i+3) FORE(i+4)
    #define FOREVER VER(0) VER(5) VER(10) VER(15) FORE(20)
        FOREVER
    
        std::cout << nactenbka << std::endl;
        return 0;
    
    }

    <3

    BACbKA, 04 Ноября 2021

    Комментарии (9)
  8. C++ / Говнокод #27785

    +3

    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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    template<typename T>
    static ALWAYS_INLINE void FormatLogMessageAndPrintW(
                                                 const char* channelName, 
                                                 const char* functionName, 
                                                 LOGLEVEL level,
                                                 const char* message, 
                                                 bool timestamp, 
                                                 bool ansi_color_code,
                                                 bool newline, 
                                                 const T& callback)
    {
      char buf[512];
      char* message_buf = buf;
      int message_len;
      if ((message_len = FormatLogMessageForDisplay(message_buf,
                           sizeof(buf), channelName, functionName,
                           level, 
                           message, timestamp,
                           ansi_color_code, newline)) > (sizeof(buf) - 1))
      {
        message_buf = static_cast<char*>(std::malloc(message_len + 1));
        message_len = FormatLogMessageForDisplay(message_buf, 
                     message_len + 1, channelName, functionName, 
                     level, message, timestamp, ansi_color_code, newline);
      }
      if (message_len <= 0)
        return;
    
      // Convert to UTF-16 first so unicode characters display correctly.
      // NT is going to do it anyway...
      wchar_t wbuf[512];
      wchar_t* wmessage_buf = wbuf;
      int wmessage_buflen = countof(wbuf) - 1;
      if (message_len >= countof(wbuf))
      {
        wmessage_buflen = message_len;
        wmessage_buf = static_cast<wchar_t*>
                   (std::malloc((wmessage_buflen + 1) * sizeof(wchar_t)));
      }
    
      wmessage_buflen = MultiByteToWideChar(CP_UTF8, 0, message_buf,
                        message_len, wmessage_buf, wmessage_buflen);
    
      if (wmessage_buflen <= 0)
        return;
    
      wmessage_buf[wmessage_buflen] = '\0';
      callback(wmessage_buf, wmessage_buflen);
    
      if (wmessage_buf != wbuf)
      {
        std::free(wbuf);                        // <=
      }
    
      if (message_buf != buf)
      {
        std::free(message_buf);
      }
    }

    Отсюда:
    https://pvs-studio.com/ru/blog/posts/cpp/0880/

    HO9I6PbCKuu_neTyx, 03 Ноября 2021

    Комментарии (31)
  9. JavaScript / Говнокод #27784

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    interface Surface {
    	n: number;
    }
    
    let shiny: Surface = {
    	n: 10.0
    }
    
    function main() {
    	print(shiny.n);
    }

    шах и мат С/C++ девелоперам :) (постов не будет - сайт все блокирует)

    ASD_77, 02 Ноября 2021

    Комментарии (3)
  10. Assembler / Говнокод #27782

    0

    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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    .org 80h
    data:
    	db "Hello, world!\n"
    	db 0
    start:
    	mov %c 1h
    	mov %bp @data
    	mov %si 0
    	.loop:
    		mov %al [%si + %bp]
    		inc %si
    		cmp %al 0h
    		jz @.exit
    		int 5h
    		jmp @.loop
    	.exit:
    	int 0h
    
      0080  48 65 6C 6C 6F 20 77 6F 72 6C 64 21 0A 00 02 02
      0090  01 00 02 06 80 00 02 05 00 00 03 0A 38 09 05 0C
      00A0 0A 00 00 0E AB 00 0B 05 0D 9A 00 0B 00 00 00 00

    накодил виртуальную машину, заспидранил Hello World за четыре дня. рекорд.
    https://github.com/kcalbSphere/PVC-16

    digitalEugene, 01 Ноября 2021

    Комментарии (27)