Git 源码禁止使用 C 标准库中容易被错用的函数
Git 项目的源码禁止开发者使用 C 标准库中的某些函数,原因是这些函数太容易被误用,就算使用得当也很容易出问题。因此 Git 的源码增加了一个 banned.h 的头函数,一旦你使用了这些被禁用的函数,将在编译时报错。
这些函数包括:
#ifndef BANNED_H
#define BANNED_H/** This header lists functions that have been banned from our code base,* because they're too easy to misuse (and even if used correctly,* complicate audits). Including this header turns them into compile-time* errors.*/#define BANNED(func) sorry_##func##_is_a_banned_function#undef strcpy
#define strcpy(x,y) BANNED(strcpy)
#undef strcat
#define strcat(x,y) BANNED(strcat)
#undef strncpy
#define strncpy(x,y,n) BANNED(strncpy)
#undef strncat
#define strncat(x,y,n) BANNED(strncat)#undef sprintf
#undef vsprintf
#ifdef HAVE_VARIADIC_MACROS
#define sprintf(...) BANNED(sprintf)
#define vsprintf(...) BANNED(vsprintf)
#else
#define sprintf(buf,fmt,arg) BANNED(sprintf)
#define vsprintf(buf,fmt,arg) BANNED(sprintf)
#endif#endif /* BANNED_H */
banned.h 源码 https://gitee.com/mirrors/git/blob/master/banned.h
Git 源码禁止使用 C 标准库中容易被错用的函数相关推荐
- c语言的erase函数,C++ STL标准库中sort,erase,remove_if函数的使用
本篇介绍C++ STL中常用的几个函数 1.std::sort 1.1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序. 1.2.sort函数的 ...
- 整理网上资料---C标准库值篇二 :标准库源码下载地址、标准库手册下载地址
C标准库源码及手册.zip,包括: http://download.csdn.net/detail/yangzhao0001/9057823 C标准库函数集(头文件索引)------手册-AH.pdf ...
- 聊聊C++11标准库中堆(heap)算法的源码
STL中支持堆操作,对外暴露了std::make_heap,std::push_heap,std::pop_heap,std::sort_heap,std::is_heap,std::is_heap_ ...
- 【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门
1.1 环境 Visual Studio + GitLab (其他版本同理) 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Me ...
- Centos7 Git源码安装
Git简介 有关于git的详细介绍和使用这里就不多说了,有兴趣看的话可以访问上一篇文章文章yum安装git 实验环境 系统版本:centos7x3.10.0-514.el7.x86_64 Git版本: ...
- php备份漏洞源码,原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更
原标题:原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更 前言 2020年好,各位 PHPer 们,很久没有写原创文章了,心里实在过意不去,决定写点文字,"从心" ...
- 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的
一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled GD Version bundled (2.0.34 compatible) GI ...
- jenkins 拉取git源码超时
由于项目使用自购服务器搭建的 gitea 管理源码,服务器带宽较小.试了几次后都没发现是构建任务的时间不足,原因就是10分钟也挺久的,谁会去等10分钟噻. 最后第二天再看之前构建的任务,发现报错如下 ...
- docker源码编译 linux_oracle linux 6 docker 安装(包括编译git源码)
在安装时请确保可以联网.安装步骤如下: 1. 更新班级yum配置(参见: http://public-yum.oracle.com/getting-started.html): # cd /etc/y ...
最新文章
- VTK:模型之Delaunay3D
- arcgis-online-python-scripts
- Linux命令:mkdir
- aws lambda使用_使用AWS Lambda的CloudWatch事件通知
- java的创建管理员对象_java--更改管理员密码,请列位帮忙看看有没有更好的实现方式...
- 考前建议:好好看一下 《网络工程师考试案例动手实验营》附录A
- 设计思路工作笔记-使用当天时间戳的差值读取实时数据绕过错误数据
- java11和13_Java1113
- npm查找全局安装包命令
- SpringBoot06 统一响应格式
- 1500个常用计算机单词
- C#技术分享【PDF转换成图片——10种方案】(2013-07-25重新整理)
- Android Metro风格的Launcher开发系列第三篇
- ASP,PHP,ASPX生成静态页大全
- mysql explain row_MySQL explain详解
- VMware Convert 使用
- 每日力扣——95. 提莫攻击
- 400分理科学计算机,2021高考400分左右的理科大学有哪些
- 黄瓜西红柿为何不能同吃?(图)
- Javascript 上传图片 显示缩略图
热门文章
- mybatis 遍历map_Mybatis 缓存系统源码解析
- android工控软件,基于Android的工业控制监控软件的设计和开发
- php oauth 扩展,PHP扩展之Web服务(一)——OAuth
- 智能水位检测系统proteus_浅谈智能视觉检测系统的6大优点
- 合成孔径成像算法与实现_MIMO OFDM宽幅SAR成像仿真与图像融合技术
- UI设计灵感|插画在引导页中的应用
- UI实用素材|购物车界面不同设计,可临摹的好模板
- java 狗带风波_养狗风波作文
- mysql 删除数据_3.MySQL数据库创建、查询、删除
- python编程入门到实践笔记-python基础(《Python编程:从入门到实践》读书笔记)...