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

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

    −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
    https://docs.microsoft.com/en-us/windows/desktop/api/winsock/nf-winsock-wsaasyncselect
    int WSAAsyncSelect(
      SOCKET s,
      HWND   hWnd,
      u_int  wMsg,
      long   lEvent
    );
    
    /*
    
    hWnd
    
    A handle that identifies the window that will receive a message when a network event occurs.
    */

    Почему виндовые асинхронные (или правильно говорить "небликирующиеся") сокеты так черезжопно сделаны? Нафига им через HWND надо месседжи слать? Что, другого способа нет для оповещений?
    Требовать для работы асинхронных сокетов чтоб какое-то окно было это как требовать зубную щетку для входа в туалет чтоб посрать

    j123123, 24 Августа 2018

    Комментарии (16)
  3. Куча / Говнокод #24503

    −1

    1. 1
    Keyword Substitution

    Котаны, что мы думаем про keyword Substitution?

    Для тех, кто в танке: была в прошлом веке такая VCS RCS.
    В ней можно было в файле указать

    $Id$

    И в момент чекаута эта строчка заменялась на
    pitushok.txt,v 1.41 02.06.1991 petya

    Где 1.41 -- ревизия, дальше дата и login того кто делал checkout.
    Когда ты потом собирал дистрибутив из сырцов то у каждого файла всегда была инфа о том, кто (И когда) последний его трогал.
    Чуваки умели делать
    static char* id ="$id$";

    В результате чего эта инфа сохранялась в бинарниках, ее можно было выдрать через комманду ident ну или вывести как-то иначе.

    Субж перекочевал в CVS, оттуда в SVN, а в gitе он был признан порочной практикой и там так никто не делает.

    Опенбздуны, например, сидящие на CVS, до сих пор имеют профит. Там везде написано
    $OpenBSD: cat.1,v 1.35 2015/11/04 21:28:01 tedu Exp $


    ...а в линуксах -- нет.

    Знаете про keywords subst? Использовали? что думаете?

    roskomgovno, 17 Июля 2018

    Комментарии (16)
  4. Куча / Говнокод #24445

    −1

    1. 1
    2. 2
    3. 3
    Яндекс начал индексировать Google Документы с паролями
    
    https://habr.com/post/416219/

    А в чем, собственно, здесь вина "Яндекс"? То что пользователи-долбоёбы держат пароли в общедоступных документах?
    В таком случае я и без "Яндекс" могу получить к ним доступ.

    CrashTesteAnusov, 05 Июля 2018

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

    +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
    $param="";
    if (isset($_REQUEST['NO'])) {
    	$param="?NO=".$_REQUEST['NO'];
    }
    if (isset($_REQUEST['no'])) {
    	$param="?NO=".$_REQUEST['no'];
    }
    if (isset($_REQUEST['No'])) {
    	$param="?NO=".$_REQUEST['No'];
    }
    if (isset($_REQUEST['nO'])) {
    	$param="?NO=".$_REQUEST['nO'];
    }

    Сначала я думал что пьяный индус скопировал и четыре раза вставил кусок кода а потом присмотрелся и ахуел, аж здесь зарегистрировался.

    zhigalin, 29 Июня 2018

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

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Небольшой опрос.
    Вы пароли от своих фаек
    - помните наизусть
    - записываете на листочке или в JSON
    - делаете одинаковый пароль от всех фаек
    - создаетё одноразовые файки и не помните пароль 
    - другое

    CrashTesteAnusov, 23 Июня 2018

    Комментарии (16)
  7. Куча / Говнокод #23694

    0

    1. 1
    2. 2
    3. 3
    4. 4
    > We demonstrate key extraction even from an implementation of Curve25519 Elliptic Curve Diffie-Hellman, which was explicitly designed 
    to minimize side channel leakage, but becomes susceptible due to use of high-level JavaScript
    
    > Concretely, we have embedded the attack code in an advertisement, which we submitted to a commercial web advertisement service

    Тут свежую атаку из жабаскрипта подвезли, они там опять ебут процессорный кэш и угадывают поведение control flow и составляющие ключа по времени доступа к памяти
    https://eprint.iacr.org/2018/119

    Fike, 01 Февраля 2018

    Комментарии (16)
  8. 1C / Говнокод #23595

    +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
    25. 25
    26. 26
    Запрос = Новый Запрос;
    Запрос.Текст = 
    	"ВЫБРАТЬ
    	|	ркЛицевыеСчета.Ссылка,
    	|	ркЛицевыеСчета.Помещение,
    	|	ркЛицевыеСчета.Дом КАК Дом,
    	|	ркЛицевыеСчета.Код КАК Код,
    	|	ркЛицевыеСчета.Помещение.Владелец Как ПомещениеВладелец
    	|ИЗ
    	|	Справочник.ркЛицевыеСчета КАК ркЛицевыеСчета";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    	Об = Справочники.ркЛицевыеСчета.НайтиПоКоду(ВыборкаДетальныеЗаписи.Код);
    	О = Об.ПолучитьОбъект();
    	Д = Справочники.ркДома.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.ПомещениеВладелец);
    	ДО = Д.ПолучитьОбъект();
    	Если Не О.ЭтоГруппа Тогда
    	О.Дом = ДО.Ссылка;
    	О.Записать();
    	КонецЕсли;
    	//ВыборкаДетальныеЗаписи
    КонецЦикла;

    Обработка в базе одного клиента.
    Не сразу понял что она вообще делает и зачем она ТАК ЭТО ДЕЛАЕТ.

    naodesu, 18 Декабря 2017

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

    0

    1. 1
    2. 2
    if(services_type == 3) var checked = 1;
    else var checked = 0;

    fellownik, 16 Ноября 2017

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

    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
    internal class Log
    	{
    		public static void WriteLine(string methodName, UpdateFile file, Exception e, LogType type = LogType.Success)
    		{
    			using (FileStream fileStream = new FileStream(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\patch.log", FileMode.OpenOrCreate))
    			{
    				using (StreamReader streamReader = new StreamReader(fileStream))
    				{
    					using (StreamWriter streamWriter = new StreamWriter(fileStream))
    					{
    						streamWriter.WriteLine(string.Format("Launcher | {0} | {1} | {2} | {3} | {4}", new object[]
    						{
    							type,
    							methodName,
    							file.FullPath,
    							e,
    							DateTime.Now
    						}), streamReader.ReadToEnd().Length);
    					}
    				}
    			}
    		}
    
    ...

    Как получить размер файла? Правильно, надо прочитать его в память и взять размер данных из памяти :facepalm:
    Зачем получать размер файла, даже не спрашивайте ))

    Источник: hxxp://promo.riseofrunes.com/InstLauncher.zip (C#, декомпилятор).

    luxtau, 31 Октября 2017

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

    +5

    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
    function getadminuserid(){
    	global $wpdb;
        //Get all users in the DB
        $wp_user_search = $wpdb->get_results("SELECT ID, display_name FROM $wpdb->users ORDER BY ID");
    
        //Blank array
        $adminArray = array();
        //Loop through all users
        foreach ( $wp_user_search as $userid ) {
            //Current user ID we are looping through
            $curID = $userid->ID;
            //Grab the user info of current ID
            $curuser = get_userdata($curID);
            //Current user level
            $user_level = $curuser->user_level;
            //Only look for admins
            if($user_level >= 8){//levels 8, 9 and 10 are admin
                //Push user ID into array
                $adminArray[] = $curID;
            }
        }
        return $adminArray;
    }

    1) Get IDs for all users
    2) Iterate over result set to find admin `get_userdata` function = 1 DB call

    outcome:
    1) full RAM
    2) dead DB

    ===
    official woocommerce plugin by company

    tatocaster, 27 Октября 2017

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