- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
/**
* GetResponse
* For common activation code length must be only 4 or 5 or 7 or 8 chars
*
* From XXX ... or 10
* From YYY ... or 11
*
* @return string
*/
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+147
/**
* GetResponse
* For common activation code length must be only 4 or 5 or 7 or 8 chars
*
* From XXX ... or 10
* From YYY ... or 11
*
* @return string
*/
эволюция
+151
<?
if(!defined('Hacking')) { die('Hacking attempt!'); exit;}
$database_user_name="demo";
$database_password="demo";
$database_name="demo";
$display_errors = false;
$AdminEmail="[email protected]";
$bpref="demo";
$domenname="demo";
function connect_db()
{
global $database_user_name, $database_password;
$db=mysql_connect("localhost",$database_user_name,$database_password) or die ("Could not connect");
mysql_query("SET NAMES cp1251") or die("Invalid query: " .mysql_error());
return $db;
}
function db_name()
{
global $database_name;
$db_name=$database_name;
return $db_name;
}
function get_now()
{
$db=connect_db();
$db_name=db_name();
mysql_select_db($db_name,$db);
$sql="select now() as now";
$result=mysql_query($sql,$db);
$myrow=mysql_fetch_array($result);
$now=$myrow["now"];
return $now;
}
function puterror($message)
{
echo("<p>$message</p>");
exit();
}
foreach($_GET as $chexss) {
if((eregi("<[^>]*script[^>]*>", $chexss)) || (eregi("<[^>]*object[^>]*>", $chexss)) ||
(eregi("<[^>]*iframe[^>]*>", $chexss)) || (eregi("<[^>]*applet[^>]*>", $chexss)) ||
(eregi("<[^>]*meta[^>]*>", $chexss)) || (eregi("<[^>]*style[^>]*>", $chexss)) ||
(eregi("<[^>]*form[^>]*>", $chexss)) || (eregi("\([^>][^)]*\)", $chexss)) ||
(eregi("<[^>]*frameset[^>]*>", $chexss)) || (eregi("<[^>]*onmouseover[^>]*>", $chexss)) ||
(eregi("<[^>]*img[^>]*>", $chexss)) || (eregi("\"", $chexss)) || (eregi("'", $chexss))){
die("Попытка ХАКА !");
}
}
$zzzz = html_entity_decode(urldecode($_SERVER['QUERY_STRING']));
if ($zzzz) {
if ((strpos($zzzz, '<') !== false) ||
(strpos($zzzz, '>') !== false) ||
(strpos($zzzz, '"') !== false) ||
(strpos($zzzz, './') !== false) ||
(strpos($zzzz, '../') !== false) ||
(strpos($zzzz, '\'') !== false) ||
(strpos($zzzz, '.pl') !== false) ||
(strpos($zzzz, '.php') !== false))
{
die("Попытка ХАКА !");
}
}
$zamena_b = array( "\x27", "\x22", "\x60", "\t",'\n','\r', '\\', "'","¬","#",";","~","[","]","{","}","=","-","+",")","(","*","&","^","%","$","<",">","?","!",".pl", ".php",'"' );
$_GET = str_replace($zamena_b, '', $_GET);
$_POST = str_replace($zamena_b, '', $_POST);
$_SESSION = str_replace($zamena_b, '', $_SESSION);
$_COOKIE = str_replace($zamena_b, '', $_COOKIE);
$_ENV = str_replace($zamena_b, '', $_ENV);
$_FILES = str_replace($zamena_b, '', $_FILES);
$_REQUEST = str_replace($zamena_b, '', $_REQUEST);
$_SERVER = str_replace($zamena_b, '', $_SERVER);
?>
Просторы интернета богаты... Так вот люди работают с СУБД
+152
$search_string = str_replace('"', '', $search_string);
$search_string = str_replace('+', '%20', $search_string);
//$search_string = preg_replace( '#([[:punct:]])#e', '( isset($punct[\'\1\']) ? $punct[\'\1\'] : \'\')', $search_string );
$search_string = trim($search_string);
$search_string = addslashes(stripslashes(htmlspecialchars(strip_tags(rawurldecode($search_string)))));
Борямся с XSS
+163
#include <stdio.h>
const int (&getArray())[10] {
static int tmp[10] = {1,2,3,4,5,6,7,8,9,10};
return tmp;
}
void foo(const int (&refArr)[10])
{
size_t size = sizeof(refArr); // returns 10*sizeof(int)
printf ("Array size: %d\r\n", size);
}
int main() {
foo(getArray());
printf ("%d", getArray()[0]);
for (size_t i=1; i<sizeof(getArray())/sizeof(getArray()[0]); ++i)
printf (",%d", getArray()[i]);
return 0;
}
http://codepad.org/rPl6b7IS
c++ страшный язык :)
Извращения на тему: http://heifner.blogspot.com/2005/06/c-reference-to-array.html
+146
count:while(1);
goto count;
−93
def self.enddayofmonth(year,month)
stdyear=[31,28,31,30,31,30,31,31,30,31,30,31]
visyear=[31,29,31,30,31,30,31,31,30,31,30,31]
if year%4>0
return stdyear[month-1]
else
return visyear[month-1]
end
end
−127
type="${(@j::M)${(@)tmp#-}#?}"
if (( $tmp[(I)-g*] )); then
glob="${${${${(@M)tmp:#-g*}#-g}##[[:blank:]]#}%%[[:blank:]]#}"
[[ "$glob" = *[^\\][[:blank:]]* ]] &&
glob="{${glob//(#b)([^\\])[[:blank:]]##/${match[1]},}}"
# add `#q' to the beginning of any glob qualifier if not there already
[[ "$glob" = (#b)(*\()([^\|\~]##\)) && $match[2] != \#q* ]] &&
glob="${match[1]}#q${match[2]}"
fi
zsh, избранное из _files: остальное чуть лучше.
Зато... хм, портабельно (в смысле между не оболочками, а платформами).
+92
// к говнокоду 7101:
interface
type TObjectAuto = class;
TSmartPtr = packed record
data: TObjectAuto;
end;
TSmartPtrA = array of TSmartPtr;
//-------------------------------------------------------------------------------------------
// класс с "авто"-деструктором
TObjectAuto = class(TObject)
n: integer; // для тестов
constructor Create(var ptr: TSmartPtrA);
destructor Destroy(); override;
end;
implementation
uses Windows;
var winheap: Cardinal;
var savedlinks: array of integer; // в тестовом примере сойдет, а вообще надо хеш-таблицу
//-------------------------------------------------------------------------------------------
constructor TObjectAuto.Create(var ptr: TSmartPtrA);
begin
inherited Create();
SetLength(ptr, 1);
ptr[0].data := self;
// сохраняем адрес выделенной памяти под массив (у него еще есть длина и счетчик ссылок)
SetLength(savedlinks, Length(savedlinks) + 1);
savedlinks[Length(savedlinks) - 1] := integer(ptr) - 2 * sizeof(integer);
end;
//-------------------------------------------------------------------------------------------
destructor TObjectAuto.Destroy();
begin
n := 0; // сюда брякпойнт поставим:)
inherited;
end;
//-------------------------------------------------------------------------------------------
function WinGetMem(Size: Integer): Pointer;
begin
Result := HeapAlloc(winheap, 0, Size);
end;
//-------------------------------------------------------------------------------------------
function WinFreeMem(P: Pointer): Integer;
var i, j: integer;
begin
// ищем адрес освобождаемой памяти среди сохраненных
i := 0; j := 0; while(i < Length(savedlinks))do begin
// если нашли, то вызываем "авто"-деструктор
if (savedlinks[i] = integer(P)) then
TSmartPtrA(integer(p) + 2 * sizeof(integer))[0].data.Free()
else begin
savedlinks[j] := savedlinks[i];
inc(j);
end;
inc(i);
end;
SetLength(savedlinks, j);
HeapFree(winheap, 0, P);
Result := 0;
end;
//-------------------------------------------------------------------------------------------
function WinReallocMem(P: Pointer; Size: Integer): Pointer;
begin
Result := HeapReAlloc(winheap, 0, P, Size);
end;
//-------------------------------------------------------------------------------------------
var winmem: TMemoryManager = (
GetMem: WinGetMem;
FreeMem: WinFreeMem;
ReallocMem: WinReallocMem);
oldmem: TMemoryManager;
//-------------------------------------------------------------------------------------------
initialization
begin
winheap := GetProcessHeap();
GetMemoryManager(oldmem);
SetMemoryManager(winmem);
SetLength(savedlinks, 0);
end;
//-------------------------------------------------------------------------------------------
finalization
begin
SetLength(savedlinks, 0);
SetMemoryManager(oldmem);
end;
//-------------------------------------------------------------------------------------------
end.
// пример использования:
procedure TfrmTest.Button1Click(Sender: TObject);
var ptr: TSmartPtrA;
obj: TObjectAuto;
begin
obj := TObjectAuto.Create(ptr);
obj.n := 222; // ptr[0].data.n := 222;
// тут obj удалится сам
end;
примерно так можно реализовать автодеструктор в delphi
для передачи в функцию нужно использовать ptr и работать с ним как ptr[0].data - неудобно конечно.
ЗЫ: код тестовый - в нем полно кривостей.
+66
http://svn.codehaus.org/groovy/trunk/groovy/groovy-core/src/main/org/codehaus/groovy/runtime/ArrayUtil.java
Было? Вроде нет...
+71
String type = ((Map<String, String>) getParams(request, Arrays.asList("type"))).get("type");
нужно было получить данные, мозг сразу выдал место где их можно взять, руки быстро воплотили это в код и немного погодя мозг начал анализировать то, что получилось :)