バグ:エラーメッセージの取得ではどのAPIを使うべきか

Posted: 2013年06月03日

文字列操作(エラーメッセージの取得)で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    char szErrorMsg[256];
    int nErrorNo;

    // 処理

    _strerror_s(szErrorMsg, 256, nErrorNo);
    puts(szErrorMsg);

    return 0;
 }

このプログラムにどのように文字列操作(書式文字列の取得)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:ファイルパスからファイル名の抜き出し

Posted: 2013年05月27日

文字列操作(ファイルパスからファいうr名を取得する処理)で書いてしまうバグを紹介します。
今回は、独自の方法であり
他の方法で取得することもできます
一例という事で

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    CString strFilePath = _T("C:Temptest.txt");

    int index = strFileName.ReverseFind(_T(""));
    if (index == -1) {
        // 見つからない
        return;
    }
    CString strFileName = strFileName.Mid(index);

    // 処理

    return 0;
 }

このプログラムにどのように文字列操作(書式文字列の取得)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , | コメント無し »

C言語入門(41) 実際にプログラムを読んで理解を深めよう ls編(15)

Posted: 2013年05月23日

前回から、ソート関数の解説しています。
今回も他のソート関数(サイズ)を解説していきます。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

バグ:文字列のコピー

Posted: 2013年05月20日

文字列操作(文字のコピー)で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    char *pArg = _strdup(argv);

    // 処理

    if (pArg != NULL) {
        free(pArg);
    }

    return 0;
 }

このプログラムにどのように文字列操作(書式文字列の取得)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:日付を文字列に変換

Posted: 2013年05月13日

文字列操作(日付を文字列に変換)で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    time_t timer;
    struct tm *pTm;

    /* 現在時刻の取得 */
    time(&timer);

    /* 現在時刻を構造体に変換 */
    pTm = localtime(&timer);

    TCHAR *pszTime;
    pszTime = _tasctime(pTm);

    // 処理

    if (pszTime != NULL) {
        delete[] pszTime;
    }

    return 0;
 }

このプログラムにどのように文字列操作(書式文字列の取得)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:書式文字列の取得

Posted: 2013年05月06日

文字列操作(書式文字列の酒盗)で書いてしまうバグを紹介します。
sprintfで指定した書式で作成した文字列を取得することが可能です。
知ったかぶりをしていると痛い目にあってしまいます。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    TCHAR strDest[256];
    sprintf(strDest, _T("%s is &d"), "A", 0x41);

    // 処理

    return 0;
 }

このプログラムにどのように文字列操作(書式文字列の取得)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:コンソール入力処理でバッファーオーバフロー

Posted: 2013年04月29日

文字列操作(キーボード入力受付)で書いてしまうバグを紹介します。
前回も、キーボード受付処理での話題でしたが
前回とは、異なる関数での話題です。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    TCHAR szBuf[256];

    // 入力要求
    gets(szBuf);

    // 処理

    return 0;
 }

このプログラムにどのように文字列操作(キーボード受付処理)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:scanfで無限ループ!!簡単に起きるけど対策は・・・

Posted: 2013年04月22日

文字列操作(入力文字)で書いてしまうバグを紹介します。

プログラムプログラム:

#include <stdio.h>

int main(void)
{
    int n = 0;
    while (n != -1) {
        puts("input:");
        scanf(" %d", &n);
        printf("result: %dn", n);
    }

    return 0;
}

このプログラムにどのように文字列操作(入力値)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:おなじみの関数(printf)を使っていたら痛い目に

Posted: 2013年04月15日

文字列操作(書式文字列処理)で書いてしまうバグを紹介します。
有名なものであり、しっかりとした参考書には記載されているとおもいます。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    if (argc <= 2) {
        // 引数が足りない
        return 1;
    }

    printf(argv[1]);

    // 処理

    return 0;
 }

このプログラムにどのように文字列操作(書式文字列操作)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

バグ:文字列の連結

Posted: 2013年04月08日

文字列操作(文字列の連結)でよくあるバグを紹介します。
定番であるため、あるため様々な対策が行われているので
発生しづらい項目
新人研修で作成したプログラムには作りこんでしまうかもくらいなもの

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    TCHAR szData[16];

    for (int nIndex=1; nIndex < 16; nIndex++) {
        _tcsncat(szData, _T("ABC"), 3);
    }

    // 処理

    return 0;
 }

このプログラムにどのように文字列操作(文字列の連結)にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , | コメント無し »
Page 2 of 512345