C缓冲区下溢定义和相关风险

C缓冲区下溢定义和相关风险,c,buffer,C,Buffer,根据维基百科: 在计算中,缓冲区下溢或缓冲区下溢是指当用于在两个设备或进程之间通信的缓冲区以低于数据读取速度的速度输入数据时发生的一种状态 来自苹果的安全编码指南: 基本上,当代码的两部分对缓冲区大小或缓冲区中的数据不一致时,就会发生缓冲区下溢。例如,一个固定长度的C字符串变量可能有256字节的空间,但可能包含一个只有12字节长的字符串 苹果的定义补充了缓冲区溢出的概念 这些定义中哪一个在技术上更合理 缓冲区下溢是主要的安全问题吗?我习惯于使用大缓冲区从串行端口或套接字轮询和读取()。这样做对吗

根据维基百科: 在计算中,缓冲区下溢或缓冲区下溢是指当用于在两个设备或进程之间通信的缓冲区以低于数据读取速度的速度输入数据时发生的一种状态

来自苹果的安全编码指南: 基本上,当代码的两部分对缓冲区大小或缓冲区中的数据不一致时,就会发生缓冲区下溢。例如,一个固定长度的C字符串变量可能有256字节的空间,但可能包含一个只有12字节长的字符串

苹果的定义补充了缓冲区溢出的概念

  • 这些定义中哪一个在技术上更合理
  • 缓冲区下溢是主要的安全问题吗?我习惯于使用大缓冲区从串行端口或套接字轮询和读取()。这样做对吗
  • 这是“暗流”一词的两种不同用法。由于它们描述了两种不同的东西,我认为您无法在技术可靠性方面对它们进行比较

  • 根据苹果的定义,缓冲区下溢可能是一个弱点。看

  • 这是“暗流”一词的两种不同用法。由于它们描述了两种不同的东西,我认为您无法在技术可靠性方面对它们进行比较

  • 根据苹果的定义,缓冲区下溢可能是一个弱点。看

  • 2) '我确实使用bzero()。这样做对吗?”

    几乎可以肯定不是。系统调用返回已接收的字节数。如果您完全确定接收的文本样式数据没有嵌入空值,并且希望对其使用C样式的字符串库调用,只需将一个空值推到缓冲区的末尾(这通常意味着读取的字节数比声明的缓冲区长度少一个字节,以确保有足够的空值空间)。在所有其他情况下,根本不用担心终结者。这要么毫无意义,要么很危险

    对于网络缓冲区来说,bzero()只是浪费周期。我不在乎有多少网页示例,也不在乎有多少来源说“必须初始化变量/缓冲区”。这是垃圾。

    2)“我确实使用bzero()。这样做对吗?”

    几乎可以肯定不是。系统调用返回已接收的字节数。如果您完全确定接收的文本样式数据没有嵌入空值,并且希望对其使用C样式的字符串库调用,只需将一个空值推到缓冲区的末尾(这通常意味着读取的字节数比声明的缓冲区长度少一个字节,以确保有足够的空值空间)。在所有其他情况下,根本不用担心终结者。这要么毫无意义,要么很危险

    对于网络缓冲区来说,bzero()只是浪费周期。我不在乎有多少网页示例,也不在乎有多少来源说“必须初始化变量/缓冲区”。这是垃圾