在内核模式上搜索字符串副本几分钟后,想到发布一个新问题。
当代码在**内核模式下运行时,什么实用程序可以帮助我进行字符串复制?
我确信那里应该有一些东西,在我当前的项目中,我看到使用memcpy()执行strcpy()函数的代码。
是的,我同意它只是strcpy()的单行代码,但您知道在代码审查中可能不会接受这些代码:)
编辑:我会以更好的方式提出问题, strcpy()是否在内核模式下使用? (比如linux内核2.6及之后)如果是这样,是使用libc还是其他一些工具?PS: 我看到strcpy()http://livegrep.com/search/linux?q=strcpy用在内核源代码中。
答案 0 :(得分:7)
我不确定你要找的答案......但是Linux内核提供了strcpy()和memcpy()。
如果您询问代码审核中如何推荐strcpy()
和朋友,您可以使用strncpy()
。大多数传统的C字符串函数都已定义,大多数都在include/linux/string.h
答案 1 :(得分:0)
在Linux源代码树中, lib 子目录中包含各种实用程序功能。有一个 string.c 文件,其中提供了 strcpy(), strcasecmp()等功能。
但是,如果您希望通过代码审查的健壮代码,则应尽可能使用某些服务的健壮版本。源代码树中的Documentation指定了不安全的功能以及建议的替代方法:
。使用strscpy()代替strcpy(),strncpy()和strlcpy()
。分别使用kstrtol(),kstrtoll(),kstrtoul(),kstrtoull()代替simple_strtol(),simple_strtoll(),simple_strtoul()和simple_strtoull()