Code WTFs

Code WTF #3

Сьогодні ще цікавого надибав:

bool test = (mail.Find('@') == -1);
if(tsInspireDate.GetDays()<15 && !active && (mail.Find('@') == -1))
{ /* ...skipped... */ }

І ніби ж не індуси…

P.S. Хоча, звісно, всяке буває… Я і у себе в коді, що часто перероблювався, якось перли знаходив (коли один дрібний фрагмент змінюєш, а попередній шматок коду, що його дублює забуваєш видалити).


Driver code WTF

Вчора наш драйверщик шукаючи одну багу в коді драйвера знайшов іншу, непримітну, залишену колишнім розробником цього драйвера. Знайдіть її і ви. Це гарна вправа на знання деяких хитрих програмістських методик.

Сирці я трохи підравив, повикидавши згадки назви драйверу та більшу частину несуттєвого до баги коду і додавши своє визначення SecurityCookie (це, до речі, теж підказка ;) ).

ULONG SecurityCookie = 0xDEADBEEF;

[ ... skipped ... ]

pUserNotificationMap->MappedSize =
    FloatingUnitSize
    + sizeof(NOTIFICATION_MAP)
    + sizeof(SecurityCookie);

pUserNotificationMap->MappedUnits = 1;

RtlCopyBytes(
    &pUserNotificationMap->NotificationUnit[0].NotificationInfo,
    &NotifInfo,
    sizeof(NotifInfo) );

*((PULONG)((PCHAR)pUserNotificationMap+pUserNotificationMap->MappedSize)) = SecurityCookie;

status = CommitNotificationUnit(
    pContext,
    pInternalPolicyRule,
    pCtxString,
    pCtxThread,
    &pUserNotificationMap->NotificationUnit[0],
    sizeof(NOTIFICATION_UNIT) + FloatingUnitSize );

//
// Overflowed? Check out!
//
if( *((PULONG)((PCHAR)pUserNotificationMap+pUserNotificationMap->MappedSize))
        != SecurityCookie )
{
    status = STATUS_HEAP_CORRUPTION;
    ReportDesignError_Leave( "Memory corruption detected!" );
}

P.S. Підказка: “за що боролись, на те й напоролись” ;)


Code WTF

Вчора потрібно було пофіксити багу в продукті і поки придивлявся місце для фіксу натрапив на таке:

 ATL::CString strText;

 SYSTEMTIME st = {0};
 GetLocalTime(&st);

 if (st.wHour<10)
     strText.Format(_T("%d/%d/%d, 0%d:%d"),
         st.wDay,st.wMonth,st.wYear, st.wHour, st.wMinute);
 else
     strText.Format(_T("%d/%d/%d, %d:%d"),
         st.wDay,st.wMonth ,st.wYear, st.wHour, st.wMinute);

 m_date.SetWindowText(strText);

Ні, код абсолютно робочий, але ж…

m_date.SetWindowText(CTime::GetCurrentTime().Format(_T("%d/%m/%Y %H:%M")));

По-моєму, краще, нє?

P.S. До речі, мабуть заведу собі в блозі відповідний розділ з wtf’ами :)