1. PHP / Говнокод #6979

    +154

    1. 1
    2. 2
    3. 3
    4. 4
    $value = $this->model->getById(DataUtil::fromGET("id"));
    foreach($this->model->get(PaginationUtil::getStart(),PaginationUtil::$countOnPage) as $value){
       return NewsUtils::createNewsLayout_ND($value);
    }

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

    Kos, 17 Июня 2011

    Комментарии (12)
  2. Си / Говнокод #6978

    +139

    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
    #include <cstdio>
    #include <malloc.h>
    
    int number;
        printf("Int to c_str convertation whith separator: ");
        do {
            printf("Enter a number (int): ");
        }
        while (!scanf ("%d",&number));
        bool negative = number<0;
        number=abs(number);
        char* reversed = (char*)(malloc(sizeof(char)));
        *reversed = 0;
        int divider=1;
        unsigned char i=3;
        int buf;
        int val = 0;
        int size=1;
       forever{
            buf=number%(divider*10);
            i--;
            size++;
            reversed = (char*)(realloc(reversed,size*sizeof(*reversed)));
            *(reversed+size*sizeof(*reversed)-1) = (buf-val)/divider+48;
            divider*=10;
            val=buf;
            if (!i){
                size++;
                reversed = (char*)(realloc(reversed,size*sizeof(*reversed)));
                *(reversed+size*sizeof(*reversed)-1)=32;
                i=3;
            }
            if (buf==number) {break;}
        }
        if (negative){
            size++;
            reversed = (char*)(realloc(reversed,size*sizeof(*reversed)));
            *(reversed+size*sizeof(*reversed)-1)='-';
        }
        char* output = (char*)(malloc(size*sizeof(*reversed)));
        for (i=0;i<size*sizeof(*reversed);i++){
            *(output+i) = *(reversed+size*sizeof(*reversed)-((1+i)*sizeof(*reversed)));
        }
         printf("Number as char* is: %s",output);

    Выводит число в строку, вставляя пробел после каждых 3-х цифр.

    Sacha_D, 17 Июня 2011

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

    +180

    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
    ; -------- мув в AX опкода команды UD2 --------
    CODE:004051B0         mov     al, 0Bh
    CODE:004051B2         mov     ah, 0Fh
    CODE:004051B4         xchg    al, ah
    CODE:004051B6         push    eax     ; save opcode
    CODE:004051B7         call    sub_40A1E5
    
    ; -------- вис для отладки --------
    ; если зависли, то найден дубликат (жестко, но надежно :D )
    CODE:0041C676         call    hash_FindWord
    CODE:0041C67B @@dbllock:
    CODE:0041C67B         jnc     @@dbllock ; <- если хэш найден, то висим
    
    ; -------- ну и искомый баг --------
    ; неправильный цикл поиска последнего элемента списка
    CODE:00401698 proc sub_401698
    CODE:00401698         mov     ecx, [dword_42944C]
    CODE:0040169E         jecxz   loc_4016AA
    CODE:004016A0 loc_4016A0:
    CODE:004016A0         mov     ecx, [ecx] ; ecx = next block
    CODE:004016A2         and     ecx, ecx
    CODE:004016A4         jnz     loc_4016A0
    CODE:004016A6         mov     eax, [ecx+8] ; <-- bag: ECX = 0
    CODE:004016A9         retn
    CODE:004016AA loc_4016AA:
    CODE:004016AA         mov     eax, [dword_42A58E]
    CODE:004016AF         retn
    CODE:004016AF endp

    Искал баги в борландовском компиляторе. Нашел немало забавных моментов, три выкладываю.

    DemonId7, 17 Июня 2011

    Комментарии (35)
  4. Java / Говнокод #6976

    +146

    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
    File tarFile = new File(UUID.randomUUID() + ".tar");
        tarFile.createNewFile();
        FileOutputStream tarFileOutputStream = new FileOutputStream(tarFile.getAbsolutePath());
        TarArchiveOutputStream   archiveOutputStream = new TarArchiveOutputStream(tarFileOutputStream);
         
        String entryName = "пример.txt";
         
        File fileToPack = new File("C:\\пример.txt");
        InputStream in = new FileInputStream(fileToPack);
         
        //создаем запись в архиве с русским названием
        TarArchiveEntry entry = new TarArchiveEntry(entryName);
        entry.setSize(in.available());
        archiveOutputStream.putArchiveEntry(entry);
         
        while (in.available() > 10 * 1024 * 1024) {
                    byte b[] = new byte[10 * 1024 * 1024];
                    in.read(b);
                    archiveOutputStream.write(b, 0, b.length);
            }
        byte b[] = new byte[in.available()];
        in.read(b);
        archiveOutputStream.write(b, 0, b.length);
        in.close();
         
        archiveOutputStream.flush();
        archiveOutputStream.closeArchiveEntry();
        archiveOutputStream.flush();
        archiveOutputStream.close();

    найдено в сети.

    Lure Of Chaos, 16 Июня 2011

    Комментарии (20)
  5. PHP / Говнокод #6975

    +154

    1. 1
    Insert into reading_count_pages (page_id, reading_count) values (973, 1)

    Любителям простых SQL-инъекций:
    Сайт одного университета: http://impuls.vntu.edu.ua/, писали, видимо, студенты должники.

    На разных страницах сайта можно наблюдать MySQL ерроры, подставляя данные в GET-запрос. Так же, по запросам можно судить о качестве проектирования сайта.
    Пример (http://impuls.vntu.edu.ua/?news_id=973%60):
    Insert into reading_count_pages (page_id, reading_count) values (973, 1), потом выполняется group by по айдишке и считается каунт. Еще пример: http://impuls.vntu.edu.ua/?all&t=50000&f=0

    rO_ot, 16 Июня 2011

    Комментарии (28)
  6. PHP / Говнокод #6974

    +158

    1. 1
    <?if ((eregi('?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])**',$_POST['admin_mail']))){echo'Ошибка в адресе почты';} ?>

    Пооверка на валидность e-mail

    drZlo, 16 Июня 2011

    Комментарии (22)
  7. Си / Говнокод #6973

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    case 43: /* + */
        sum_up += sum_up > 1 ? 0 : 1;
        return 1;
    case 45: /* - */
        sum_up -= sum_up < 1 ? 0 : 1;
        return 1;

    Если выше/ниже лимита то добавляем/отнимаем ничего.

    ЗЫ sum_up это переменная контролирующая уровень вербозности (0,1,2) специальной мониторной проги. кнопками +/- можно интерактивно контролировать. К слову, сверху это уже правленый код. Оригинальный оригинал:

    if (c == 43) { sum_up = sum_up > 1 ? sum_up : ++sum_up; return 1; }
    if (c == 45) { sum_up = sum_up < 1 ? sum_up : --sum_up; return 1; }

    Dummy00001, 16 Июня 2011

    Комментарии (41)
  8. Java / Говнокод #6972

    +147

    1. 1
    2. 2
    3. 3
    if(entry.getName().equals("back.jpg"));{
    
    }

    просто смешная (но с последствиями) опечатка

    Lure Of Chaos, 16 Июня 2011

    Комментарии (12)
  9. Java / Говнокод #6971

    +78

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    if (searchFB.getOrderNo()!=null && searchFB.getOrderNo().length()==6){
        int drawingStatus = searchFB.getDrawingStatus();
        int criticalStatus = searchFB.getCriticalStatus();
        int blockingStatus = searchFB.getBlockingStatus();
        int suspensionStatus = searchFB.getSuspensionStatus();
    
        searchFB.setDrawingStatus(drawingStatus);
        searchFB.setCriticalStatus(criticalStatus);
        searchFB.setBlockingStatus(blockingStatus);
        searchFB.setSuspensionStatus(suspensionStatus);
    }

    И это мне поддерживать...

    TC1, 16 Июня 2011

    Комментарии (5)
  10. Objective C / Говнокод #6970

    −108

    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
    + (NSUInteger)tagExpensiveCandyAnimationInteger:(NSUInteger)tagSprite
    {
    	NSUInteger animationTag;
    	if(tagSprite == 2001)
    	{
    		animationTag = 2101;
    	}
    	else if(tagSprite == 2002)
    	{
    		animationTag = 2102;
    	}	
    	else if(tagSprite == 2003)
    	{
    		animationTag = 2103;
    	}		
    	else if(tagSprite == 2004)
    	{
    		animationTag = 2104;
    	}		
    	else if(tagSprite == 2005)
    	{
    		animationTag = 2105;
    	}		
    	else if(tagSprite == 2006)
    	{
    		animationTag = 2106;
    	}		
    	else if(tagSprite == 2007)
    	{
    		animationTag = 2107;
    	}			
    	else if(tagSprite == 2008)
    	{
    		animationTag = 2108;
    	}
    	else if(tagSprite == 2009)
    	{
    		animationTag = 2109;
    	}	
    	else if(tagSprite == 2010)
    	{
    		animationTag = 2110;
    	}		
    	else if(tagSprite == 2011)
    	{
    		animationTag = 2111;
    	}		
    	else if(tagSprite == 2012)
    	{
    		animationTag = 2112;
    	}			
    	
    	return animationTag;
    }

    Того же автора:)

    Chippman, 16 Июня 2011

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