1. Лучший говнокод

    В номинации:
    За время:
  2. PHP / Говнокод #1492

    +131.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
    function key_check($key) {
     if ($key == '') { return ''; }
     $key = preg_replace("/[^\w\xB2-\xB4\xBF-\xFF\xA5\xA8\xAA\xAF\xB8\xBA\s]/", "", $key );
     if ($key =='_SERVER' OR $key =='_SESSION' OR $key =='_FILES' OR $key =='_REQUEST' OR $key =='GLOBALS') die("<h3>Error variable ".basename(__FILE__)." ".__LINE__."</h3>");
     else return $key;
    }
    
    function str_check($str_val) {
    if ($str_val == '') { return ''; }
                    if(preg_match("/<[^>]*script*\"?[^>]*>/i", $str_val)
                    or preg_match("/<[^>]*object*\"?[^>]*>/i", $str_val)
                    or preg_match("/<[^>]*applet*\"?[^>]*>/i", $str_val)
                    or preg_match("/<[^>]*form*\"?[^>]*>/i"  , $str_val)
                    or preg_match("/&#\d+;{0,1}/i"  , $str_val) ){
                                    die("<h3>ERROR ".basename(__FILE__)." ".__LINE__."</h3>");
                    }
      $str_val = str_replace( "&"            , '&amp;'                 , $str_val );
      $str_val = str_replace( "<!--"         , '&#60;!--'              , $str_val );
      $str_val = str_replace( "-->"          , '--&#62;'               , $str_val );
      $str_val = str_replace( ">"            , '&gt;'                  , $str_val );
      $str_val = str_replace( "<"            , '&lt;'                  , $str_val );
      $str_val = str_replace( "\""           , '&quot;'                , $str_val );
      $str_val = str_replace( "\r"           , null                    , $str_val );
      $str_val = str_notsqlatacs($str_val);
      if (!get_magic_quotes_gpc()){$str_val=addslashes($str_val);}
      return $str_val;
    }
    function str_notsqlatacs($str_val) {
    $searcharray =array('/drop/i','/delete/i','/union/i','/char/i','/benchmark/i','/expression/i','/alert/i','/replace/i','/write/i','/document/i','/window/i','/script/i','/user_pass/i','/unescape/i','/eval/i','/form/i','/applet/i','/object/i','/user_login/i','/setTimeout/i','/onerror/i');
    $replacearray=array('&#100;rop','&#100;elete','&#117;nion','&#99;har','&#98;enchmark','&#69;xpression','&#65;lert','&#82;eplace','&#87;rite','&#68;ocument','&#87;indow','&#83;cript','&#85;ser_pass','&#85;nescape','&#69;val','&#70;orm','&#65;pplet','&#79;bject','&#85;ser_login','/&#83;etTimeout/i','/&#79;nerror/i');//
    $str_val=preg_replace($searcharray, $replacearray, $str_val);
      return $str_val;
    }

    Фрагмент файла ./php/wojs.php "портального движка" WebCodePortalSystem версии 5.2. И вот так вся CMSка - два с половиной мегабайта говна.

    guest, 07 Августа 2009

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

    +131.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
    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
    66. 66
    67. 67
    68. 68
    static void module3_exit(void){        
      cdev_del(mydev);            
      printk(KERN_INFO"Device"DEV_NAME"was deleted");
    };                                               
    int mydev_open(struct inode *in,struct file *filp){                                                 
      printk(KERN_INFO DEV_NAME "open");              
      struct dev_state *dev_stat;                     
      dev_stat=&STATE[MINOR(in->i_rdev)];             
      if(dev_stat->dev_open)                          
      {                                               
        printk("Kernel: device "DEV_NAME" is exist"); 
        return -EBUSY;                                
      };                                              
      dev_stat->dev_open++;                           
      dev_stat->dev_read=0;                           
      dev_stat->dev_write=0;                          
      int num= NUM(in->i_rdev);                       
      int type=TYPE(in->i_rdev);                      
      return 0;                                       
    };                                                
    
    int mydev_ioctl(struct inode *in,struct file *filp,unsigned int ioctl,unsigned long param)
    {                                                                                         
      printk(KERN_INFO DEV_NAME "ioctl");                                                     
      return 0;                                                                               
    };                                                                                        
    
    ssize_t mydev_read(struct file *filp,char *buff,ssize_t len,loff_t pos)
    {                                                                      
      printk(KERN_INFO DEV_NAME "read");                                   
      struct inode *in;                                                    
      int count=len;                                                       
      struct dev_state *devst;                                             
      printk("Kernel: try to read %d bytes \n",len);                       
      in=filp->f_dentry->d_inode;                                          
      printk("Kernel: minor number is %d",MINOR(in->i_rdev));              
      devst=&STATE[MINOR(in->i_rdev)];                                     
      while(count--)                                                       
      {                                                                    
        put_user(inb_p(PORT_START+10*MINOR(in->i_rdev)),buff);             
        buff++;                                                            
      };                                                                   
      devst->dev_read+=len;                                                
      printk(KERN_INFO"Kernel: read "DEV_NAME" %d bytes",len);             
      return len;                                                          
    };                                                                     
                                                                           
    ssize_t mydev_write(struct file *filp, const char *buff, ssize_t len,loff_t pos)
    {
      printk(KERN_INFO DEV_NAME "write");
      struct inode *in;
      int count=len;
      unsigned char byte;
      struct dev_state *devst;
      printk(KERN_INFO"Kernel: try to write %d bytes\n",len);
      in=filp->f_dentry->d_inode;
      printk(KERN_INFO"Kernel: minor number %d\n",MINOR(in->i_rdev));
      devst=&STATE[MINOR(in->i_rdev)];
      while(count--)
      {
        get_user(byte, buff);
        outb_p(byte, PORT_START+10*MINOR(in->i_rdev));
        buff++;
      };
      devst->dev_write +=len;
      printk(KERN_INFO"Kernel: "DEV_NAME " written %d bytes\n",len);
      return len;
    };

    Модуль ядра

    Alice, 25 Декабря 2009

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

    +131.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
    public static DataTable DeserilazeDataTable(string schema, string data)
            {
                DataTable tbl = new DataTable();
                if (!string.IsNullOrEmpty(schema))
                    using (Stream stream = new MemoryStream())
                    {
                        byte[] bufer = GetBytes(schema);
    
                        stream.Write(bufer, 0, bufer.Length);
                        stream.Position = 0;
                        tbl.ReadXmlSchema(stream);
                    }
    
                if (!string.IsNullOrEmpty(data))
                    using (Stream stream = new MemoryStream())
                    {
                        byte[] bufer = GetBytes(data);
    
                        stream.Write(bufer, 0, bufer.Length);
                        stream.Position = 0;
                        tbl.ReadXml(stream);
                    }
    
                return tbl;
            }
    
     public static byte[] GetBytes(string str)
            {
                if (string.IsNullOrEmpty(str))
                    return new byte[0];
    
                char[] ch = str.ToCharArray();
                byte[] bufer = new byte[ch.Length];
                for (int i = 0; i < ch.Length; i++)
                    bufer[i] = (byte)ch[i];
    
                return bufer;
            }
    //также имеются методы для сериализации, работающие также
    public static string SerilazeDataTable(DataTable table)
    public static string SerilazeDataTableShame(DataTable table)
    public static string GetString(byte[] bufer)

    Вот такой десериализатор таблицы в Xml нашел в проэкте.

    sven47, 11 Ноября 2009

    Комментарии (3)
  5. Си / Говнокод #1114

    +131.2

    1. 1
    WCHAR szSLASHSTARDOTSTAR[] = TEXT("\\*");  /* This is a single "\"  */

    Из убежавших исходников Widnows 2000,
    win2k\private\ntos\w32\ntuser\client\clg lobal.c

    guest, 31 Мая 2009

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

    +131

    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
    private static string GetKeyCode()
            {
                string ret = null;
                while (true)
                {
                    //sleeping for while, this will reduce load on cpu
                    Thread.Sleep(1);
                  
                    for (Int32 i = 0; i < 255; i++)
                    {
                        int keyState = GetAsyncKeyState(i);
                        if (keyState == 1 || keyState == -32767)
                        {
                            if ((WinApi.Keys) i == WinApi.Keys.VkReturn)
                            {
                                return ret;
                            }
                            var s = KeyToChar((WinApi.Keys)i);
                            ret = ret + s;
                        }
                    }
                }
            }
    
            private static char KeyToChar(WinApi.Keys key)
            {
                return unchecked((char)MapVirtualKeyW((uint)key, MAPVK_VK_TO_CHAR)); // Ignore high word.  
            }
    
            private const uint MAPVK_VK_TO_CHAR = 2;
            [System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
            public static extern uint MapVirtualKeyW(uint uCode, uint uMapType);
            [DllImport("user32.dll")]
            public static extern int GetAsyncKeyState(Int32 i);

    И вот такое бывает - аутсорсеры плагинов к нашему продукту так слушают клавиатурный ввод... (facepalm)

    !!! Thread.Sleep(1);
    !!! for (Int32 i = 0; i < 255; i++) - проверяют, не нажимали ли что-то

    babasya, 16 Июля 2015

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

    +131

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    fi = fopen("kokoko.tmp", "rb");
    
            fseek(fi, 0, SEEK_END);
            file_size = ftell(fi);
            fseek(fi, 0, SEEK_SET);

    rewind? system call? Не, не слышали.

    codemonkey, 30 Марта 2015

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

    +131

    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
    Я даже не могу сказать, что не так с "PHP", потому что… Окей. Представьте себе, эмм, коробку с инструментами.
    Набор инструментов. Выглядит нормально, инструменты как инструменты.
    
    Вы берёте отвёртку и видите крестовину с тремя лепестками.
    Окей, не очень полезно для вас, но может когда-нибудь понадобиться.
    
    Берёте молоток и ужасаетесь тому, что он раздвоен с двух сторон.
    Он, конечно, всё ещё пригоден, я имею ввиду, что вы можете забивать гвозди серединой бойка, держась за ручку наоборот.
    
    Берёте плоскогубцы, у которых нет зазубрин; они плоские и гладкие.
    Не так полезно, как могло бы быть, но ими всё ещё можно выкручивать болты.
    
    И так далее. Все инструменты чем-то странные и вывернутые, но не настолько, чтобы
    быть совсем бесполезными. И во всём наборе нет конкретной проблемы; в нём есть все инструменты.
    
    Теперь представьте себе миллионы плотников, использующих такой вот набор
    инструментов и говорящих вам: «А что не так с этими инструментами? Я никогда не использовал ничего другого и они отлично работают!».
    И плотники показывают вам, построенные ими дома с пятиугольными комнатами и крышей кверху ногами.
    Вы стучитесь в дверь, она просто падает внутрь и они орут на вас за то, что вы сломали их дверь.
    
    Вот что не так с "PHP".

    Время баянчиков.

    gost, 17 Марта 2015

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

    +131

    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
    private static List<Vessel> boosterVesselList = new List<Vessel>();
    		/// <summary>
    		/// Вернуть судно по строковому обозначению судна
    		/// </summary>
    
    		private static Vessel GetVesselByIdString(string vesselStrId)
    		{
    			Vessel findVessel = null;
    
    			// Просмотр в ускоряющем списке
    			foreach (Vessel boostVessel in boosterVesselList)
    			{
    				if (boostVessel.Name == vesselStrId)
    				{
    					findVessel = boostVessel;
    					break;
    				}
    			}
    
    			// Если в списке не нашли, ищем в БД
    			if (findVessel == null)
    			{
    				findVessel = VesselBusinessLogic.GetItemByName(vesselStrId);
    
    				if (findVessel == null)
    				{
    					findVessel = new Vessel
    					{
    						Id = -1,
    						Name = vesselStrId
    					};
    
    					findVessel.Id = PublicFunctions.AddOrUpdate(findVessel);
    					boosterVesselList.Add(findVessel);
    				}
    			}
    
    			return findVessel;
    		}

    Это один из методов класса для работы с морскими судами. Я пока не совсем понял как так и зачем так. Боже мой.... мама, роди меня обратно. Комментарии оригинальные.

    alex_lis, 17 Марта 2015

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

    +131

    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
    elseif selectedObj::mouthOnMenuRect then
      if dir == "left" then
        inv = true
        changeMouth()
      elseif dir == "right" then
        inv = false
        changeMouth()
      end
    elseif selectedObj::eyesOnMenuRect then
      if dir == "left" then
        inv = true
        changeEyes()
      elseif dir == "right" then
        inv = false
        changeEyes()
      end
    elseif

    Вступительная заставка к фильму "Добро пожаловать в рай", промелькнуло с десяток таких вот блоков "elseif selectedObj::чтоТоТамOnMenuRect".
    В начале фильма под сеансом видеосвязи с аналоговыми помехами закольцевали фрагмент телефонного справочника на си с полотнами printf.
    Где-то в середине в консольном окошке с заголовком "DATABASE_QUERY" продемонстрировали код функции groups_alloc из ядра linux, а чуть позже - groups_from_user и groups_sort из того же файла.
    Между делом, хакер отличается от других тем, что у него не терминал, а SECURE_TERMINAL, сам он носит ублюдошные очки в толстой оправе, а код в терминале тот же сишный, но красного цвета вместо зеленого.
    Под конец на "главный сервер" заливали виндовый батничек, над которым явно работали больше, чем над сценарием фильма. Нагуглился исходник батничка: http://www.wikihow.com/Make-a-Prank-Virus-(Windows)

    Xom94ok, 01 Марта 2015

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

    +131

    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
    using UnityEngine;
    using System.Collections;
    
    public class move : MonoBehaviour {
    	public GameObject walk;
    	public GameObject Stay;
    	public Transform wgon;
    	// Use this for initialization
    	void Awake () 
    	{
    	walk.SetActive(false);
    	Stay.SetActive(false);
    	}
    	
    	// Update is called once per frame
    	void Update () 
    	{
    	if(Input.GetKey(KeyCode.W))
    	{
    	walk.SetActive(true);
    	Stay.SetActive(false);
    	wgon.transform.Translate(0.0f, 0.0f, 0.3f);
    	}
    		if(Input.GetKeyUp(KeyCode.W))
    		{
    			walk.SetActive(false);
    			Stay.SetActive(true);
    		}
    		if(Input.GetKey(KeyCode.D))
    		{
    			wgon.transform.Rotate(0.0f, 0.5f, 0.0f);
    		}
    		if(Input.GetKey(KeyCode.A))
    		{
    			wgon.transform.Rotate(0.0f, -0.5f, 0.0f);
    		}
    	}
    }

    koe-kto, 14 Февраля 2015

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