From 8fb9647d2682e63452a61b5fe81315bd27110a71 Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 06:27:57 +0000 Subject: [PATCH 01/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...1\345\205\250c\345\272\223\350\260\203\347\240\224.md" | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" index b4e9842..376b891 100644 --- "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" +++ "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" @@ -1,8 +1,12 @@ # 安全c库调研 ## 背景 -safe c library 最初是由微软为 Windows 平台实现的,提供了一系列的安全接口,并且由于微软的大力推荐被写入C11标准的附录K,但是C/C++的标准库并没有支持这些安全函数,在linux世界并没有等到广泛支持和使用。 +安全c库(safe c library)最初是由微软为 Windows 平台实现的,提供了一系列的安全接口,并且由于微软的大力推荐被写入C11标准的附录K,但是C/C++的标准库并没有支持这些安全函数,在linux世界并没有等到广泛支持和使用。 ## 相关标准 - [C11标准附录K](../行业标准/c11-standard-final-draft.pdf) +安全c库主要遵循以下行业标准实现: +[C11标准附录K](../行业标准/c11-standard-final-draft.pdf) +[n1089](../行业标准/n1089.pdf) +[n1173:Rationale for TR 24731 Extensions to the C Library Part I: Bounds-checking interfaces](../行业标准/n1173_TR_bounds_rationale.pdf) +[n1225](../行业标准/n1225_TR_bounds.pdf) openKylin社区希望在社区的安全研发流程中引入和推广安全c库,达到提高代码安全性的目的。 -- Gitee From 6cddae8cec74d49e1883736c41ed390c9a1cb351 Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 06:29:52 +0000 Subject: [PATCH 02/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...6\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" | 4 ++++ 1 file changed, 4 insertions(+) diff --git "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" index 376b891..1c23bd9 100644 --- "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" +++ "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" @@ -3,9 +3,13 @@ 安全c库(safe c library)最初是由微软为 Windows 平台实现的,提供了一系列的安全接口,并且由于微软的大力推荐被写入C11标准的附录K,但是C/C++的标准库并没有支持这些安全函数,在linux世界并没有等到广泛支持和使用。 ## 相关标准 安全c库主要遵循以下行业标准实现: + [C11标准附录K](../行业标准/c11-standard-final-draft.pdf) + [n1089](../行业标准/n1089.pdf) + [n1173:Rationale for TR 24731 Extensions to the C Library Part I: Bounds-checking interfaces](../行业标准/n1173_TR_bounds_rationale.pdf) + [n1225](../行业标准/n1225_TR_bounds.pdf) -- Gitee From b1ed16447c3d23b997cd286507a4bed418e2d135 Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 07:10:18 +0000 Subject: [PATCH 03/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...\205\250c\345\272\223\350\260\203\347\240\224.md" | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" index 1c23bd9..032fa32 100644 --- "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" +++ "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" @@ -4,13 +4,17 @@ ## 相关标准 安全c库主要遵循以下行业标准实现: -[C11标准附录K](../行业标准/c11-standard-final-draft.pdf) +- [C11标准附录K](../行业标准/c11-standard-final-draft.pdf) -[n1089](../行业标准/n1089.pdf) +- [n1089](../行业标准/n1089.pdf) -[n1173:Rationale for TR 24731 Extensions to the C Library Part I: Bounds-checking interfaces](../行业标准/n1173_TR_bounds_rationale.pdf) +- [n1173:Rationale for TR 24731 Extensions to the C Library Part I: Bounds-checking interfaces](../行业标准/n1173_TR_bounds_rationale.pdf) + +- [n1225](../行业标准/n1225_TR_bounds.pdf) + +## Safe C Library开源项目介绍 +Safe C Library开源项目是sourceforge代码托管平台上的一个开源项目,创建于2012年。 -[n1225](../行业标准/n1225_TR_bounds.pdf) openKylin社区希望在社区的安全研发流程中引入和推广安全c库,达到提高代码安全性的目的。 -- Gitee From 9d676b54090eabb3512051722b32ec6288f9eef8 Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 07:16:14 +0000 Subject: [PATCH 04/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...11\345\205\250c\345\272\223\350\260\203\347\240\224.md" | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" index 032fa32..c57fdbd 100644 --- "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" +++ "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" @@ -1,7 +1,7 @@ # 安全c库调研 ## 背景 -安全c库(safe c library)最初是由微软为 Windows 平台实现的,提供了一系列的安全接口,并且由于微软的大力推荐被写入C11标准的附录K,但是C/C++的标准库并没有支持这些安全函数,在linux世界并没有等到广泛支持和使用。 -## 相关标准 +安全c库(safe c library)最初是由微软为 Windows 平台实现的,提供了一系列的安全接口,并且由于微软的大力推荐被写入C11标准的附录K,但是C/C++的标准库并没有支持这些安全函数,在linux世界并没有等到广泛支持和使用。目前在开源代码托管平台能够找打的成熟的安全c库开源项目,是sourceforge代码托管平台的Safe C Library开源项目。 +## 安全c库相关标准 安全c库主要遵循以下行业标准实现: - [C11标准附录K](../行业标准/c11-standard-final-draft.pdf) @@ -13,7 +13,8 @@ - [n1225](../行业标准/n1225_TR_bounds.pdf) ## Safe C Library开源项目介绍 -Safe C Library开源项目是sourceforge代码托管平台上的一个开源项目,创建于2012年。 +Safe C Library开源项目是sourceforge代码托管平台上的一个开源项目(https://sourceforge.net/projects/safeclib/),该项目创建于2012年,最后的更新时间是2016年。此项目后续由Reini Urban在github上的继续维护()。 + -- Gitee From 04f5f440ff757b94988dbdd6573aef3d9027ed7b Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 07:16:34 +0000 Subject: [PATCH 05/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" index c57fdbd..8a0a2a5 100644 --- "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" +++ "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" @@ -13,7 +13,7 @@ - [n1225](../行业标准/n1225_TR_bounds.pdf) ## Safe C Library开源项目介绍 -Safe C Library开源项目是sourceforge代码托管平台上的一个开源项目(https://sourceforge.net/projects/safeclib/),该项目创建于2012年,最后的更新时间是2016年。此项目后续由Reini Urban在github上的继续维护()。 +Safe C Library开源项目是sourceforge代码托管平台上的一个开源项目(https://sourceforge.net/projects/safeclib ),该项目创建于2012年,最后的更新时间是2016年。此项目后续由Reini Urban在github上的继续维护()。 -- Gitee From 0f657fcb62ee5dffb43eed5fd7c98e15659aed4b Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 07:30:20 +0000 Subject: [PATCH 06/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...6\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" index 8a0a2a5..3d06313 100644 --- "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" +++ "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" @@ -13,7 +13,9 @@ - [n1225](../行业标准/n1225_TR_bounds.pdf) ## Safe C Library开源项目介绍 -Safe C Library开源项目是sourceforge代码托管平台上的一个开源项目(https://sourceforge.net/projects/safeclib ),该项目创建于2012年,最后的更新时间是2016年。此项目后续由Reini Urban在github上的继续维护()。 +Safe C Library开源项目是sourceforge代码托管平台上的一个开源项目(https://sourceforge.net/projects/safeclib ),该项目创建于2012年,最后的更新时间是2016年。该项目使用的开源协议是MIT License,属于宽松型许可协议。 + +在Safe C Library开源项目停止更新后,此项目后续由Reini Urban在github上的继续维护( https://github.com/rurban/safeclib )。 -- Gitee From 0a60fa7ae698e6f186e70c30dd09d44961e0eba5 Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 07:31:47 +0000 Subject: [PATCH 07/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- images/image.png | Bin 0 -> 25787 bytes ...250c\345\272\223\350\260\203\347\240\224.md" | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 images/image.png diff --git a/images/image.png b/images/image.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d5d8499a68a80d56ddbac4f165d76721167bf5 GIT binary patch literal 25787 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 Date: Wed, 28 Dec 2022 07:32:16 +0000 Subject: [PATCH 08/12] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20images/imag?= =?UTF-8?q?e.png=20=E4=B8=BA=20images/safeclib=5Finfo.png?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- images/{image.png => safeclib_info.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename images/{image.png => safeclib_info.png} (100%) diff --git a/images/image.png b/images/safeclib_info.png similarity index 100% rename from images/image.png rename to images/safeclib_info.png -- Gitee From 2a2d548fd5dc959b789a3345629bbedb45ca6b87 Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 07:32:42 +0000 Subject: [PATCH 09/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" index c43fd0b..5b74126 100644 --- "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" +++ "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" @@ -17,7 +17,7 @@ Safe C Library开源项目是sourceforge代码托管平台上的一个开源项 在Safe C Library开源项目停止更新后,此项目后续由Reini Urban在github上的继续维护( https://github.com/rurban/safeclib )。 ### 项目情况介绍 -![输入图片说明](../images/image.png) +![输入图片说明](../images/safeclib_info.png) openKylin社区希望在社区的安全研发流程中引入和推广安全c库,达到提高代码安全性的目的。 -- Gitee From 4d9e5b6c0c10265eb0f8d688389e24a302ea427b Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 07:38:35 +0000 Subject: [PATCH 10/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" index 5b74126..8b0f05c 100644 --- "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" +++ "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" @@ -18,6 +18,5 @@ Safe C Library开源项目是sourceforge代码托管平台上的一个开源项 ### 项目情况介绍 ![输入图片说明](../images/safeclib_info.png) - - -openKylin社区希望在社区的安全研发流程中引入和推广安全c库,达到提高代码安全性的目的。 +项目一共获得226个stars,56个forks,总共发布19个版本,最新的版本是3.7.1,于2022年2月1日发布。最新的PR提交是2022年8月23日。 +总体来说该项目的项目成熟度,社区关注度,社区活跃度都较高,也有人在持续维护。 -- Gitee From da92555f439d84a98bdf47756dd96304087ece26 Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 07:38:58 +0000 Subject: [PATCH 11/12] =?UTF-8?q?update=20=E6=8A=80=E6=9C=AF=E8=B0=83?= =?UTF-8?q?=E7=A0=94/=E5=AE=89=E5=85=A8c=E5=BA=93=E8=B0=83=E7=A0=94.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...56\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" index 8b0f05c..9a68fe4 100644 --- "a/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" +++ "b/\346\212\200\346\234\257\350\260\203\347\240\224/\345\256\211\345\205\250c\345\272\223\350\260\203\347\240\224.md" @@ -18,5 +18,6 @@ Safe C Library开源项目是sourceforge代码托管平台上的一个开源项 ### 项目情况介绍 ![输入图片说明](../images/safeclib_info.png) -项目一共获得226个stars,56个forks,总共发布19个版本,最新的版本是3.7.1,于2022年2月1日发布。最新的PR提交是2022年8月23日。 + +该项目一共获得226个stars,56个forks,总共发布19个版本,最新的版本是3.7.1,于2022年2月1日发布。最新的PR提交是2022年8月23日。 总体来说该项目的项目成熟度,社区关注度,社区活跃度都较高,也有人在持续维护。 -- Gitee From c48ae937ba74a1b747e8429f5fd0718bd9836143 Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 28 Dec 2022 07:41:12 +0000 Subject: [PATCH 12/12] update README.md. Signed-off-by: xujian --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4739735..4cd31fd 100644 --- a/README.md +++ b/README.md @@ -17,5 +17,6 @@ openKylin社区的安全开发阶段的工作内容,包括建立安全编码 # 安全开发调研 * [CodeCheck工具调研](./代码检查工具/CodeCheck工具调研.md) +* [安全c库调研](./技术调研/安全c库调研.md) # 安全编码赋能 -- Gitee