- 1
- 2
- 3
- 4
- 5
- 6
- 7
bool ChatHandler::HandleNpcYellCommand(const char* args)
{
if (!*args)
return false;
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+153
bool ChatHandler::HandleNpcYellCommand(const char* args)
{
if (!*args)
return false;
...
}
+120
public static bool GetUpperBit(long number)
{
return number < 0;
}
Да это не ГК, но остроумный способ получить верхний бит числа.
+73
ICQ::logInIcq( )
{
TLV clid1,clid,clm,clmin,clless,clbild,cldistr,cllang,clcontr,t1;
WSA ws;
int packn;
unsigned char st1[40];
port=ControlIcqPropert.portIcqServer;
host=(char*)ControlIcqPropert.IcqServer;
if((strlen(host)==0)|(port==0))
{
port=DEFAULT_SERVER_PORT;
host=DEFAULT_SERVER_HOST;
}
if(strlen(password)<3) return 0;
pn=sock.Connect( host,port );
packn=sock.Receive( ( char * )uc,sizeof( uc ),0,0 );
if( packn <= 0 ){return 1;}
//SetIndic(10);
tUin.type=0x0100;
tUin.lenght[0]=0x00;//htons( ( BYTE )strlen( uin ) );
tUin.lenght[1]=strlen(uin);
memcpy( tUin.data,uin,strlen( uin ) );
flap.chan_id=0x01;
flap.Sequence+=0x0100;
flap.datalenght[0]=0x00;
flap.datalenght[1]=0x04;
flap.data[0]=0x00;
flap.data[1]=0x00;
flap.data[2]=0x00;
flap.data[3]=0x01;
packn=sock.Send( ( const char * )&flap,10,0 );
flap.Sequence+=0x0100;
flap.chan_id=0x02;
t1.type=0x1700;
t1.lenght[0]=0x00;
t1.lenght[1]=0x06;
t1.data[0]=0x00;
t1.data[1]=0x00;
t1.data[2]=0x00;
t1.data[3]=0x00;
t1.data[4]=0x00;
t1.data[5]=0x00;
int lnum=0;
lnum+=10;
memcpy( &st1,&t1,lnum );
memcpy( &st1[lnum],&tUin,strlen(uin)+4 );
lnum+=strlen(uin)+4;
unsigned char u1[4];
u1[0]=0x00;
u1[1]=0x4B;
u1[2]=0x00;
u1[3]=0x00;
memcpy( &st1[lnum],&u1,4 );
lnum+=4;
memcpy( flap.data,&st1,lnum );
flap.datalenght[0]=0x00;
flap.datalenght[1]=0x1B;
lnum+=6;
packn=sock.Send( ( char * )&flap,lnum,0 );
//memcpy( &flap,NULL,4096 );
packn=sock.Receive( ( char * )&inflap,sizeof( inflap ),0 );
memcpy( &uc,&inflap,packn );
memcpy( &snac,&uc[6],packn-6 );
memcpy( key,&snac.data[2],snac.data[1] );
int ii;
MD5_CTX Md5Ctx;
HASH hash;
MD5Init ( &Md5Ctx );
MD5Update( &Md5Ctx, ( unsigned char* )password, strlen( password ) );
MD5Final ( ( uchar* )hash, &Md5Ctx );
MD5Init ( &Md5Ctx );
MD5Update( &Md5Ctx, ( unsigned char* )key, snac.data[1] );
MD5Update( &Md5Ctx, ( unsigned char* )hash, 16 );
MD5Update( &Md5Ctx, ( unsigned char* )AIM_MD5_STRING, strlen( AIM_MD5_STRING ) );
MD5Final ( ( uchar* )hash, &Md5Ctx );
flap.chan_id=0x02;
flap.Sequence+=0x0100;
flap.datalenght[0]=0x00;
flap.datalenght[1]=0x72;
t1.lenght[0]=0x00; //Not Lenght!!! it is SNAC!!!
t1.lenght[1]=0x02;
memcpy( uc,&t1,10 );
memcpy( &uc[10],&tUin,13 );
TLV auth_h;
auth_h.type=0x2500;
auth_h.lenght[0]=0x00;
auth_h.lenght[1]=0x10;
memcpy( &auth_h.data,&hash,16 );
memcpy( &uc[23],&auth_h,20 );
uc[43]=0x00;
uc[44]=0x4c;
uc[45]=0x00;
uc[46]=0x00;
clid1.type=0x0300;
Много лет назад, будучи молодым программером писал абсолютное гавно. Была поставлена задача реализовать протокол оскар 11 в одной бухгалтерской системе. Полное отсутствие архитектуры приложения, бизнес-слоя. В общем мне тогда сказали что так писать не надо и с треском выгнали. После этого так перестал писать :-)
+111
try {} finally {
retVal = NativeMethods.CreateProcess ( /* ... */ );
/* ... и дальше остальной код... */
}
Откопано в исходниках .NET 2.0 Framework, так реализуется Process.Start. Не очень понял замысла. Нашёл, что finally обязательно продолжит исполняться, если во время его исполнения на поток ВНЕЗАПНО вызван метод Abort. Т.е. если потоку, создающему процесс, сделать аборт, процесс всё равно упорно создаcтся и запустится (чистки памяти я не нашёл). В чём смысл? Так можно было бы тогда всякий код оборачивать в finally... Ящитаю, что это всё костыли вокруг говноархитектуры. Не зря в Яве Thread.stop сделали deprecated. А вы как считаете?
+67.7
for(__=_;__<___;__++) C++;
Недавно увидел такие имена переменных, очарован, теперь срочно переделываю весь проект!
PS. Тело цикла сами знаете для кого.
+58.5
template <int n>
struct fibonacci
{
static int result()
{
return fibonacci<n-2>::result() + fibonacci<n-1>::result();
}
};
........... и где-нибудь в коде:
fibonacci<7>::result();
Работает в msvc 2008 sp1 и более ранних. g++ и некоторые другие отваливаются с ругательствами на урезмерную рекурсию. Особо злостным маньякам можно рекомендовать понаслаждаться просмотром поля "memory usage" процесса cl.exe :)
Также можно (но не нужно) устроить ddos подвесив халявный компилятор здесь:
http://www.dinkumware.com/exam/default.aspx
+157
<?php echo ((strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) ? "top: 35px;" : ""); ?>
Постоянно натыкаюсь, разбирая старые проекты. Народ просто не знал, про CC в осле.
+24
function ToUpper($str)
{
return strtoupper(strtr($str, "йцукенгшщзхъэждлорпавыфячсмитьбю", "ЙЦУКЕНГШЩЗХЪЭЖДЛОРПАВЫФЯЧСМИТЬБЮ"));
}
битрикс
+2
// В преддверии нового года на сайте PVS-Studio увеличилось количества C++ говнокода.
// Во-первых, вышла подбора багов за год, а во-вторых, квиз на поиск багов.
// Первый пример кода из квиза для разминки:
void UObject::setDeltaPitch(const UMatrix &gizmo) {
....
if (_fpzero(amount, eps))
return
rotateAccum.setAnglesXYZ(axis);
....
}
Если заинтересовались, то приятного чтения и удачи в поисках говнокодистых багов. Вас ждёт говнокод первого сорта.
Топ 10 ошибок в C и С++ проектах в 2023 году - https://pvs-studio.ru/ru/blog/posts/cpp/1092/
С++ квиз от PVS-Studio и Сергея Кушниренко - https://pvs-studio.ru/ru/blog/quest/kushnirenko_quiz/
А если что-то останется непонятным в квизе, то есть его разбор - https://pvs-studio.ru/ru/blog/posts/cpp/1091/
С наступающим НГ!
0
curl -fsSL https://deno.land/x/install/install.sh | sh
Хи-хи-хи