文章关键字 ‘C语言’

为什么用strlcpy取代strncpy

2011年09月26日,星期一

最近看模块代码,发现字符串的拷贝都用的strlcpy,所以就查了查用strlcpy取代strncpy的原因。

详细内容请看:http://www.gratisoft.us/todd/papers/strlcpy.html

(更多…)

C语言函数strcpy strncpy和strlcpy

2011年09月25日,星期日

好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。
但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。

(更多…)

MAX_PATH 还是 MAX_PATH + 1 ?

2011年06月12日,星期日

很多人以为 Windows 限制文件最长路径或目录最长路径是 260 个字符,所以经常写以下代码:

//特别加1用来保存 NUL 结束符
TCHAR szPath[MAX_PATH + 1];

其实是错误的,MSDN 上已经说的很清楚了:

(更多…)

用C语言实现PHP的addslashes函数

2011年03月14日,星期一

最近几天看了一下《SQL Injection Attacks and Defense》,并对学校的网站做了一下测试,发现学校的网站真是漏洞百出。同时也发现,在ASP、ASP.NET、JSP、PHP等常见服务端中,PHP中的SQL注入漏洞是最少的(至少我们学校的是这样)。

这也没什么好奇怪的,稍有常识的人都知道,PHP配置文件中有一个magic_quotes_gpc选项,默认为on,会对$_GET、$_POST、$_COOKIE进行addslashes处理,把敏感字符过滤掉。这样,即使是一个没有安全意识的新手写出来的代码,也不太容易出现SQL注入。

所以特意在PHP的C源码中搜索了一下阻碍我SQL注入的“罪魁祸首”addslashes函数的实现。在PHP源码的ext/standard/string.c中,我稍微整理了一下:

(更多…)

用C语言实现PHP的dirname函数

2011年03月13日,星期日

写一个程序要用到,于是整理了一下。在PHP源码中的ext/standard/string.c中。

(更多…)