-
+143
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
void foo()
{
#define A_LEN 32
#define B_LEN 40
void* tmp_a = malloc(A_LEN);
memset(tmp, 0, A_LEN);
void* tmp_b = malloc(B_LEN);
memset(tmp, 0, B_LEN);
/* ... тело функции ...*/
free(tmp_a);
free(tmp_b);
}
Выложил болванку правда, а не сам код, но за то все сразу очень наглядно. При чем дефайны повторяются в каждой функции.
Imperfectum,
07 Апреля 2011
-
+146
- 1
- 2
- 3
char[10] str;
...
str[1] = '0' + 1;
'1' ? Не, не слышал....
DRAN1k,
06 Апреля 2011
-
+144
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
/* возвращает в buf последние 4 символа имени файла filename */
void getfileext(unsigned char *buf, unsigned char *filename)
{
int i, j;
for (i = strlen((char *) filename) - 4, j = 0; i < strlen((char *) filename); i++, j++)
buf[j] = filename[i];
return;
}
angry C nerd,
06 Апреля 2011
-
+134
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
int _Mbtowcx(wchar_t *pwc, const char *s, size_t nin, mbstate_t *pst, _Statab *pmbstate)
char state = (char)pst->_State;
unsigned char *su = (unsigned char *)s;
wchar_t wc = (wchar_t)pst->_Wchar;
static const mbstate_t initial = {0};
if (pmbstate->_Tab[0] == 0) { /* no table, convert from UTF8 */
if (s == 0)
{ /* set initial state */
*pst = initial;
return (0);
}
for (; ; ++su, --nin) { /* consume an input byte */
if (nin == 0) { /* report incomplete conversion */
pst->_Wchar = wc;
pst->_State = state;
return (-2);
}
else if (0 < state) { /* fold in a successor byte */
if ((*su & 0xc0) != 0x80) { /* report invalid sequence */
errno = EILSEQ;
return (-1);
}
wc = (wchar_t)((wc << 6) | (*su & 0x3f));
--state;
}
else if ((*su & 0x80) == 0)
wc = *su; /* consume a single byte */
else if ((*su & 0xe0) == 0xc0) { /* consume first of two bytes */
wc = (wchar_t)(*su & 0x1f);
state = 1;
}
else if ((*su & 0xf0) == 0xe0) { /* consume first of three bytes */
wc = (wchar_t)(*su & 0x0f);
state = 2;
}
else{ /* report invalid sequence */
errno = EILSEQ;
return (-1);
}
if (state == 0) { /* produce an output wchar */
if (pwc != 0)
*pwc = wc;
pst->_State = 0;
return (wc == 0 ? 0 : (const char *)++su - s);
}
}
}
else
{ /* run finite state machine */
int limit = 0;
if (s == 0) { /* set initial state */
*pst = initial;
return (pmbstate->_Tab[0][0] & _ST_STATE);
}
for (; ; ) { /* perform a state transformation */
unsigned short code;
const unsigned short *stab;
if (nin == 0)
{ /* report incomplete conversion */
pst->_Wchar = wc;
pst->_State = state;
return (-2);
}
else if (_NSTATE <= state
|| (stab = pmbstate->_Tab[state]) == 0
|| (_NSTATE*UCHAR_MAX) <= ++limit
|| (code = stab[*su]) == 0)
{ /* report invalid sequence */
errno = EILSEQ;
return (-1);
}
state = (char)((code & _ST_STATE) >> _ST_STOFF);
if (code & _ST_FOLD)
wc = (wchar_t)(wc & ~UCHAR_MAX | code & _ST_CH);
if (code & _ST_ROTATE)
wc = (wchar_t)(wc << CHAR_BIT | UCHAR_MAX
& wc >> CHAR_BIT * (sizeof (wchar_t) - 1));
if (code & _ST_INPUT && *su != '\0')
++su, --nin, limit = 0;
if (code & _ST_OUTPUT)
{ /* produce an output wchar */
int nused = (const char *)su - s;
if (pwc)
*pwc = wc;
pst->_Wchar = wc;
pst->_State = state;
return (wc == 0 ? 0 : nused == 0 ? -3 : nused);
}
}
}
}
Долго не мог понять почему не работает
setlocale(...);
_setmbcp(...);
mbtowc(...);
на C++ Builder. Пока не заглянул в исходники.
sanchousf,
05 Апреля 2011
-
+141
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
char *toScan;
unsigned int IP1, IP2, IP3, IP4, IPMask;
if(argc > 1) {
toScan = argv[1];
if(sscanf(toScan, "%u.%u.%u.%u/%u", &IP1, &IP2, &IP3, &IP4, &IPMask) != 5) {
puts("Error parsing arguments.");
return -1;
} else {
if(IP1 > 255 || IP2 > 255 || IP3 > 255 || IP4 > 255 || IPMask > 32) {
puts("Incorrect values specified.");
return -2;
} else {
baseIP |= IP1 & 0xFF;
baseIP |= ((IP2 << 8) & 0xFF00);
baseIP |= ((IP3 << 16) & 0xFF0000);
baseIP |= ((IP4 << 24) & 0xFF000000);
baseIP = ntohl(baseIP);
intCountIP = (unsigned long) pow(2, 32-IPMask);
//printf("Total IP's: %u\n", countIP());
}
}
} else {
return -1;
}
Парсинг аргументов из одного сетевого сканера. Программа выявляет выключенные хосты в указанной подсети.
Несмотря на *это*, сканер работает весьма резво (350 IP в секунду)
danilissimus,
31 Марта 2011
-
+113
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
int main(int argv,char *argc[]){
...
if(fork() != 0)goto _EXIT;
...
return 0;
_EXIT:
return 0;
}
Ну как ???
Mooncrafter,
24 Марта 2011
-
+126
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
format MS COFF
public fuckHighLevel as '_fuckHighLevel@4'
fuckHighLevel:
pop ebx
pop eax
add eax, 1
jmp ebx
Вызываем ассемблерную процедуру из Си.
Вместо retn используем безусловыный переход на адрес возврата.
Но работает же!
danilissimus,
19 Марта 2011
-
+105
- 1
int c = ((i-(i%(int)pow(10,p)))/(int)pow(10,p))%10;
Выделение из числа I цифры, стоящей на месте P с конца.
=>
i = 1234, p = 2, c => 2
danilissimus,
16 Марта 2011
-
+127
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
[code=Си]
switch(n)
case 1:
{
/* code1 */
/* fallthrough */
case 2:
/* code 2 */
}
[/code]
Все имена и явки изменены!
Сцуко, работает. Щас в стандарт полезу, интересно же! Обвиняют меня, я киваю на издержки мержа. Но смешно.
nil,
15 Марта 2011
-
+132
- 1
- 2
- 3
- 4
- 5
- 6
- 7
if (argc == 3)
snprintf(outfile, sizeof(outfile) - 1, "scan.log", argv[1], argv[2]);
else if (argc >= 4)
{
snprintf(outfile, sizeof(outfile) - 1, "scan.log", argv[1], argv[3], argv[2]);
// ...
}
Какой-то иксплойт, файл pscan2.c
raorn,
14 Марта 2011