問題タブ [strncpy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C:sprintfとstrncpyを使用して、ポインターの配列にデータを挿入します
ポインタの配列を持つ構造体があります。「1」、「2」などの文字列形式で配列の数字を挿入したいと思います。
ただし、sprintfとstrncpyのどちらを使用するかに違いはありますか?
私のコードに大きな間違いはありますか?私は無料で電話しなければならないことを知っています、私は私のコードの別の部分でそれをします。
アドバイスありがとうございます!
c++ - strncpyが安全でないのはなぜですか?
strncpyが安全でないと見なされる理由を調べています。誰かがこれまたはそれを使用したエクスプロイトの例に関する何らかのドキュメントを持っていますか?
c - strncpyおよびsizeofを使用して最大文字数をコピーする
私は以下のコードを使用しています
ソースが宛先よりも大きい場合に備えて、オーバーフローを保護するために、常に宛先にsizeofを使用します。このようにして、宛先が処理できる量だけコピーするため、バッファオーバーフローを防ぐことができます。
しかし、私は今、それが宛先をヌル終了するかどうか疑問に思っています。
いくつかのケース。
1)ソースが大きい場合。私はこれを行うことができます:
2)送信元が宛先よりも小さい場合。呼び出しは64バイトで、ソースのサイズである50バイトをコピーします。51要素に自動的にnullを入れますか?
情報をありがとう、
c - strcpy の代わりに strncpy を使用する必要があるのはなぜですか?
編集:例のソースを追加しました。
私はこの例に出くわしました:
この出力を生成したもの:
これは、なぜ誰もがこの効果を望んでいるのか疑問に思います. 混乱しそうです。このプログラムは、Tom Bro763 で誰かの名前 (Tom Brokaw など) を基本的にコピーできると思います。
strncpy()
over を使用する利点は何strcpy()
ですか?
c - strncpy が null で終了しないのはなぜですか?
strncpy()
おそらくバッファオーバーフローから保護します。ただし、null で終了せずにオーバーフローを防ぐと、後続の文字列操作がオーバーフローする可能性が高くなります。したがって、これを防ぐために、次のことを行っています。
man strncpy
与えます:
のバイト以下がコピーさ
strncpy()
れることを除いて、機能は似ています。したがって、 の最初のバイトにnull バイトがない場合、結果は null で終了しません。n
src
n
src
次のように一見無害に見えるものをnullで終了することなく:
...クラッシュする可能性があります。
より安全で優れた代替手段はありstrncpy()
ますか?
c - strlcpy と strlcat が安全でないと見なされるのはなぜですか?
と がとの安全な代替品として設計されたことを理解してstrlcpy
います。しかし、一部の人々は、自分は安全ではなく、単に別の種類の問題を引き起こすだけだと考えています。strlcat
strncpy
strncat
strlcpy
またはstrlcat
(つまり、常に文字列を null で終了する関数) を使用してセキュリティ上の問題が発生する可能性がある例を誰かが挙げることができますか?
Ulrich Drepper と James Antill は、これは正しいと述べていますが、例を提供したり、この点を明確にしたりすることはありません。
c - 初期化されていない値がヒープ割り当てによって作成されました
私はこのバグを追いかけてきましたが、うまくいきません。基本的なCか何かを忘れましたか?
96行目はパラメーター"char* input"を正常に出力しますが(DEBUG_ON == 1)、105行目はvalgrindエラーを吐き出します(コンソールでは正常に出力されます)。「char*input」は、getline()が入力行を取得することで発生します。この関数の場合、引用符なしの「path / test/path」のようになります。前の関数でうまく印刷して操作できます。「char*inputCopy」について初期化されていないものは何ですか?何か案は?前もって感謝します!
c - strncpyを使用してファイルを1行ずつchar配列にコピーする
だから、テキストファイルを1行ずつ読み込んで、各行をchar配列に保存しようとしています。
ループ内のプリントアウトから、行数と行ごとの文字数が適切にカウントされていることがわかりますが、strncpy
. データ配列を印刷しようとすると、奇妙な文字が 2 つしか表示されません。私は一度も働いたことがないstrncpy
ので、私の問題はヌル終了に関係していると思います。
c - 静的配列の変更
ファイルで宣言された静的変数があります。
クラスのメソッドの1つの中で、私はこれをやっています:
strncopy を実行すると、プログラムがクラッシュします。何が間違っているのかわかりません