(セキュリティホール memo - 2008.06経由)
..\、../、\.\、/../をチェックしているようだが、UTF-8の文字は対応しているのだろうか・・・
/*----- ダウンロード時の不正なパスをチェック ----------------------------------
*
* Parameter
* TRANSPACKET *packet : ダウンロード情報
*
* Return Value
* int YES=不正なパス/NO=問題ないパス
*----------------------------------------------------------------------------*/
int CheckPathViolation(TRANSPACKET *packet)
{
int result = NO;
char *msg;
if((strncmp(packet->RemoteFile, "..\\", 3) == 0) ||
(strncmp(packet->RemoteFile, "../", 3) == 0) ||
(strstr(packet->RemoteFile, "\\..\\") != NULL) ||
(strstr(packet->RemoteFile, "/../") != NULL))
{
msg = malloc(strlen(MSGJPN297) + strlen(packet->RemoteFile) + 1);
if(msg)
{
sprintf(msg, MSGJPN297, packet->RemoteFile);
MessageBox(GetMainHwnd(), msg, MSGJPN086, MB_OK);
free(msg);
}
result = YES;
}
return(result);
}