1. 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)
  2. 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)
  3. 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)
  4. 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)
  5. Си / Говнокод #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)
  6. Java / Говнокод #6972

    +147

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

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

    Lure Of Chaos, 16 Июня 2011

    Комментарии (12)
  7. 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)
  8. 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)
  9. Java / Говнокод #6969

    +77

    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
    public class SomeEntityBean implements javax.ejb.EntityBean {
        private boolean loadMember;
        private Wrapper list;
    
        /* ... */
    
        public void ejbLoad() {
            this.loadMember = false;
            load();
        }
    
        private void load() {
            /* a LOT of code */
            String[] attrList = this.loadMember ?  a.attrListMember() : a.attrList();
            this.list = new Wrapper(attrList);
            /* a LOT of code */
        }
    
        public Something getSomething() {
            /* a LOT of code */
            this.loadMember = true;
            load();
            /* do something with this.list */
            this.loadMember = false;
            return something;
        }
    }

    Имена персонажей были умышленно изменены.
    Разумеется, loadMember больше нигде не используется.
    Яркий пример повторного использования кода.

    roman-kashitsyn, 16 Июня 2011

    Комментарии (38)
  10. PHP / Говнокод #6968

    +158

    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
    if(isset($_POST['otmen'])){
    	die('1');
    	echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/admin/?page=pages'>";
    	exit();
    }else{
        $id=$_GET['id'];
    $name=$_POST['name'];
        $title=$_POST['title'];
    $txt=$_POST['txt'];
    $txt=str_replace("\\\"","\"", $txt);
    $meta_desc=$_POST['meta_desc'];
    $meta_key=$_POST['meta_key'];
    $templ=$_POST['templ'];
    mysql_query("set names cp1251");
        $DB->query("UPDATE ".$pdb."_pages SET name='".$name."', title='".$title."', templ='".$templ."' WHERE id='".$id."'");
        $DB->query("UPDATE ".$pdb."_pages SET txt='".$txt."' WHERE id='".$id."'");
        $DB->query("UPDATE ".$pdb."_meta SET meta_desc_txt='$meta_desc' WHERE id='$id'");
        $DB->query("UPDATE ".$pdb."_meta SET meta_key_txt='$meta_key' WHERE id='$id'");
    
    echo "<center>Текст изменён!<br>Если вас не перенаправляет на другую странице, то нажмите на эту ссылку: <a href='/admin/?page=pages'>Заказы</a></center>";
    	if(isset($_POST['prim'])){
    		echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/admin/?page=pages'>";
    	}
    	if(isset($_POST['ok'])){
    		echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/admin/?page=pages&id=$id'>";
    	}
    	exit();
    }

    Модуль (?) редактирования страниц. $_POST['otmen'] - это при нажатии кнопки "отмена". $_POST['prim'] - это "применить", $_POST['ok'] - "сохранить". Иногда лучше не смотреть, в чем работаешь...

    ling, 16 Июня 2011

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