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

    +157.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
    public function is_image($mime) {
    		//Функция проверяет по mime типу является ли поступивший файл изображением
    		$images_mime = array('image/jpeg','image/pjpeg','image/png','image/cgm','image/fits','image/g3fax',
    							'image/gif','image/ief','image/jp2','image/jpm','image/jpx','image/naplps',
    							'image/prs.btif','image/prs.pti','image/t38','image/tiff','image/tiff-fx',
    							'image/vnd.adobe.photoshop','image/vnd.cns.inf2','image/vnd.djvu','image/vnd.dwg',
    							'image/vnd.dxf','image/vnd.fastbidsheet','image/vnd.fpx','image/vnd.fst',
    							'image/vnd.fujixerox.edmics-mmr','image/vnd.fujixerox.edmics-rlc','image/vnd.globalgraphics.pgb',
    							'image/vnd.microsoft.icon','image/vnd.mix','image/vnd.ms-modi','image/vnd.net-fpx',
    							'image/vnd.sealed.png','image/vnd.sealedmedia.softseal.gif','image/vnd.sealedmedia.softseal.jpg',
    							'image/vnd.svf','image/vnd.wap.wbmp','image/vnd.xiff');
    		if(!in_array($mime,$images_mime)) {
    			//Не было найдено совпадений mime типа - это не картинка
    			return false;
    		}
    		else {
    			//Было найдено совпадение mime типа
    			return true;
    		}
    	}

    Кучка бредокода ради закрытия уязвимости.

    Subsanek, 10 Марта 2010

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

    +100.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
    int main()
    {
    	puts("<?php\n");
    	int ch, xit, i, j;
    	for(j=0;j<4;j++) {
    	printf("$weather_date[%d]='", j);
    	xit=1;
    	while(xit) {
    	do { ch = getc(stdin); } while((ch != EOF)&&(ch != '<'));
    	if(ch == EOF) return 1;
    	h = getc(stdin);
    	if(ch == EOF) return 1;
    	if(ch == 't') {
    	ch = getc(stdin);
    	if(ch == EOF) return 1;
    	if(ch == 'd') {
    	do { ch = getc(stdin); } while((ch != EOF)&&(ch!='>'));
    	if(ch == EOF) return 1;
    	do { ch = getc(stdin); if((ch != EOF)&&(ch != '<')) printf("%c", ch); } while((ch != EOF)&&(ch != '<'));
    	if(ch == EOF) return 1;
    	printf("';\n$weather_time[%d]='", j);
    		for(i=0;((ch = getc(stdin)) != EOF)&&(i<2); i++);
    	if(ch == EOF) return 1;
    	do { ch = getc(stdin); if((ch != EOF)&&(ch != '<')) printf("%c", ch); } while((ch != EOF)&&(ch != '<'));
    	if(ch == EOF) return 1;
    	puts("';\n");
    	xit = 0;

    по крону генерится php-скрипт, прогой написанной на сях)

    xXx_totalwar, 10 Марта 2010

    Комментарии (14)
  3. PHP / Говнокод #2743

    +163.5

    1. 1
    2. 2
    3. 3
    $this->query_insert($this, array('', $mode, '', '',$id_group_new, $id_subgroup, $id_product,
    '', '', '', '', '', '', '', '', '',
    '', '', '', '', '', '', '', '', '', '', '', ''));

    Вышел на этот кусок гкода с ошибки о неверном количестве значений в sql insert, не удивился :)

    hardcoder, 10 Марта 2010

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

    +73.4

    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
    public class SaveBlankElementException extends RuntimeException{
        public SaveBlankElementException(Throwable cause){
            super(cause);
        }
        public SaveBlankElementException(String message,Throwable cause){
            super(message,cause);
        }
        public SaveBlankElementException(String message){
            super(message);
        }
        public SaveBlankElementException(){
    
        }
        @Override
        public String getMessage(){
            return "Попытка сохранения пустого элемента\nНе вызван prepareCreate()";
        }
      
    }

    Зачем, спрашивается было создавать этот класс, когда можно было бы
    вызвать исключение
    throw new UnsupportedOperationException("Попытка сохранения пустого элемента\nНе вызван prepareCreate()");

    maxt, 10 Марта 2010

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

    +154.1

    1. 1
    $style = ( U_AREA != 'admin' and !defined('U_AREA_MOD') ) ?  'public/templates/' . URegistry::$settings['default_template']['value'] :  'sources/skin_acp/' . SKIN_ACP;

    ололо

    ololo, 09 Марта 2010

    Комментарии (8)
  6. Куча / Говнокод #2740

    +60.9

    1. 1
    2. 2
    3. 3
    <a href="game.php?page=buildings&cmd=insert">
    <input style='color:#0F0; font-weight: bold'; type='submit' value='bla-bla-bla'>
    </a>

    Человек ВНЕЗАПНО понял, как сделать рамку вокруг ссылки "как у кнопки".

    Int, 09 Марта 2010

    Комментарии (9)
  7. PHP / Говнокод #2739

    +163.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
    #_connect
    mysql_connect("XX.XXX.XX.XX","user","pass") or die("chect db connect settings o_o'");
    mysql_select_db("database") or die("db not found O_o");
    #_
    
    $ip=GetIP();
    $date=date("Y-m-d H:i:s");
    $browser=GetBrowser();
    $referer=$_SERVER['HTTP_REFERER'];
    
    
    $sql="CREATE TABLE `Stats` (
    `ip` VARCHAR( 19 ) NOT NULL ,
    `date` DATETIME NOT NULL ,
    `browser` VARCHAR( 30 ) NOT NULL ,
    `referer` VARCHAR( 128 ) NOT NULL ,
    `count` MEDIUMINT NOT NULL ,
    PRIMARY KEY ( `ip` )
    );";
    
    if (!defined("ADMIN"))
    {
    	$sql="SELECT * FROM `Stats` WHERE `ip` = '$ip'";
    	$res=mysql_query($sql);	$arr=mysql_fetch_array($res);
    	if (!empty($arr))
    	{	$sql="UPDATE Stats SET Stats.count = Stats.count +1 WHERE ip = '$ip'";
    	@mysql_query($sql);
    	$sql="UPDATE Stats SET Stats.date = '$date' WHERE ip = '$ip'";
    	@mysql_query($sql);
    	}
    	else
    	{	$sql="
    		INSERT INTO `Stats`
    		( `ip` , `date` , `browser` , `referer` , `count`, `first_date` ) VALUES
    		('$ip', '$date', '$browser', '$referer', 1, '$date');
    	";
    	@mysql_query($sql);
    	};
    };
    
    Function GetBrowser()
    {	$useragent = $_SERVER['HTTP_USER_AGENT'];
    	$brows = 'none';
    	if(strpos($useragent, "Mozilla") !== false) $brows = 'Mozilla Firefox';
    	if(strpos($useragent, "MSIE")    !== false) $brows = 'Microsoft Internet Explorer';
    	if(strpos($useragent, "MyIE")    !== false) $brows = 'MyIE';
    	if(strpos($useragent, "Opera")   !== false) $brows = 'Opera';
    	if(strpos($useragent, "Netscape")!== false) $brows = 'Netscape';
    	if(strpos($useragent, "Firefox") !== false) $brows = 'Mozilla Firefox';
    	return $brows;
    };
    
    Function GetIP()
    {
    	$ip = $_SERVER['REMOTE_ADDR'];	if(empty($ip)) $ip=$_SERVER['X_FORWARD_FOR'];
    	if(empty($ip)) $ip = '0.0.0.0';
    	return $ip;
    };

    Этот код инклюдится первой строкой в index.php.

    Особенно феерично выглядит
    --
    $sql="SELECT * FROM `Stats` WHERE `ip` = '$ip'";
    $res=mysql_query($sql); $arr=mysql_fetch_array($res);
    --

    На момент аудита исходников в таблице Stats было более 300 тысяч записей и index.php отдавался примерно за 1.5 сек

    darkestmaster, 09 Марта 2010

    Комментарии (19)
  8. Си / Говнокод #2738

    +138.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
    unsigned char SIM300_Reboot(void)
    {
        // проверим статус модема
        if (!pinSTATUS)             // если STATUS = 0 (модем выключен)
        {
            while (1)               //если не включается-включаем до посинения
            {
                if (!(Modem_ON()))
                    return 0;
            }
    
        } else                      // если STATUS = 1 (модем включен)
        {
            while (1)               //если не выключается - выключаем до посинения
            {
                if ((!Modem_OFF()) && (!Modem_ON()))
                    return 0;
            }
    
        }
    }

    тяжёлые будни программиста embedded-систем.
    дополнительный аромат: упомянутые функции возвращают 0 в случае успешного выполнения, а не наоборот, как можно было бы подумать при виде if (!some_func(...))

    angry C nerd, 09 Марта 2010

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

    +73.8

    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
    public class Date extends java.util.Date{
        @Override
        public String toString(){
            return toLocaleString();
        }
        public Date(String s){
            super(s);
        }
        public Date(int year,int month,int date,int hrs,int min,int sec){
            super(year,month,date,hrs,min,sec);
        }
        public Date(int year,int month,int date,int hrs,int min){
            super(year,month,date,hrs,min);
        }
        public Date(int year,int month,int date){
            super(year,month,date);
        }
        public Date(long date){
            super(date);
        }
        public Date(){
        }
        public java.sql.Date getSQLDate(){
            return new java.sql.Date(getTime());
        }
    }

    из за переопределения и еще какого, а главное как:
    @Override
    public String toString(){
    return toLocaleString();
    }
    писать целый класс, это не каждый сможет.

    maxt, 09 Марта 2010

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

    +59.4

    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
    m = 1;
    
    label:
    
    ...block1;
    
    if (m == 1)
    {
    	m++;
    	goto label;
    }
    else if (m == 2)
    {
    	m++;
    	...block2;
    	goto label;
    else
    {
    	...block3;
    }
    if (m == 3)
    	m = 1;
    else
    	m--;

    из реально работающей математической проги

    будет ли выполнено m--? ))

    glook, 08 Марта 2010

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