第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這段程序為什么會出現(xiàn)bug?strncpy應怎么修改才行?謝謝。

這段程序為什么會出現(xiàn)bug?strncpy應怎么修改才行?謝謝。

C
ibeautiful 2023-03-05 11:07:14
void Database_set(struct Connection *conn, int id, const char *name, const char *email){struct Address *addr = &conn->db->rows[id];if(addr->set) die("Already set, delete it first");addr->set = 1;// WARNING: bug, read the "How To Break It" and fix thischar *res = strncpy(addr->name, name, MAX_DATA);// demonstrate the strncpy bugif(!res) die("Name copy failed");res = strncpy(addr->email, email, MAX_DATA);if(!res) die("Email copy failed");}
查看完整描述

2 回答

?
慕沐林林

TA貢獻2016條經(jīng)驗 獲得超9個贊

strncpy的參數(shù)是char*,而這個函數(shù)Database_set,name,和email的類型的是const char*
所以會出錯,因為strncpy里面的實現(xiàn)需要操作指針位移,但是const卻限制不允許修改指針,
你可以編譯這段代碼,一定是編譯出錯,而且會提示const char* 轉換char*失敗的問題

查看完整回答
反對 回復 2023-03-08
?
烙印99

TA貢獻1829條經(jīng)驗 獲得超13個贊

應該是指針越界吧,email的容量比MAX_DATA小的時候,就越界了,add->email同理
有溢出漏洞
應該在復制之前比較兩個字符串的容量

查看完整回答
反對 回復 2023-03-08
  • 2 回答
  • 0 關注
  • 107 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號