大思想尬 2022-07-04 20:26 采纳率: 100%
浏览 68
已结题

支出四个代码片段(很短)的问题和漏洞并完善代码片段

支出这四个代码片段的问题和漏洞并给出解决方案,谢谢了
第一个:
void get_y_or_n ( void ) {
char response [8];
printf ( " Continue ? [ y ] n : " );
gets ( response );
if ( response [0] == ’n ’)
exit (0);
return ;

第二个:

void secure_copy ( char * input )
{
char dest_buffer [32];
char input_len = strlen ( input ) ;

if ( input_len < 32)
{
strcpy ( dest_buffer , input ) ;
printf ( " The first argument is % s \ n " ,
dest_buffer ) ;
} else

printf ( " Error : input is too long .\ n " ) ;
}
第三个:
int print ( char * s ){
printf ( s );
}

第四个:
char file [] = " dummy " ;
if (! access ( file , W_OK ) )
{
f = fopen ( file , " wb + " ) ;
write_to_file ( f ) ;
}
else
{
fprintf ( stderr , " Permission denied when
trying to open % s .\ n " , file ) ;
}

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-07-04 20:54
    关注

    就是这些字符串、文件处理函数,要使用线程安全函数
    gets改为gets_s
    strcpy改为strcpy_s
    printf改为printf_s
    fopen改为fopen_s

    第一个:
    void get_y_or_n ( void ) {
    char response [8];
    printf ( " Continue ? [ y ] n : " );
    gets_s ( response,8 );
    if ( response [0] == ’n ’)
    exit (0);
    return ;
    }
    第二个:
    
    void secure_copy ( char * input )
    {
    char dest_buffer [32];
    char input_len = strlen ( input ) ;
    
    if ( input_len < 32)
    {
    strcpy_s ( dest_buffer , 32,input ) ;
    printf_s ( " The first argument is % s \ n " ,
    dest_buffer ) ;
    } else
    {
    printf_s ( " Error : input is too long .\ n " ) ;
    }
    第三个:
    int print ( char * s ){
    printf_s( s );
    }
    
    第四个:
    char file [] = " dummy " ;
    if (! access ( file , W_OK ) )
    {
    fopen_s (&f, file , " wb + " ) ;
    write_to_file ( f ) ;
    }
    else
    {
    fprintf_s ( stderr , " Permission denied when
    trying to open % s .\ n " , file ) ;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月12日
  • 已采纳回答 7月4日
  • 创建了问题 7月4日

悬赏问题

  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 hadoop中启动hive报错如下怎么解决