タグ

PL-Cに関するsasaplus1のブックマーク (108)

  • IPA ISEC セキュア・プログラミング講座:C/C++言語編 第7章 データ漏えい対策:テンポラリファイル(Unix の一時ファイル)

    第7章 データ漏えい対策 テンポラリファイル(Unix の一時ファイル) テンポラリファイルにデータを一時的に保持する際、重要な情報が含まれる場合は /tmp 等共通のディレクトリの使用を避けた方がよい。個人情報、暗号鍵、パスワード等は特にそうである。 /tmp 等のシステム共通のディレクトリはそのコンピュータのほとんどすべてのアカウントから読み書きできるため、情報が漏えいしやすい。また、シンボリックリンク攻撃を受けるおそれがある。 重要な情報を一時ファイルに書き込む処理のあるプログラムが対象となる。 テンポラリファイル対策 テンポラリファイルとして格納したデータが漏えいしてしまう問題は、長期的に保管するデータでは無く、一時的に利用するだけという扱いにより、十分な注意が向けられないことから発生している。この対策としては、まず、テンポラリファイルに格納するデータに重要な情報(個人情報や暗号鍵

  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

  • http://azu.github.com/Slide/HowToLearn/

  • かそくそうち - __attribute__の括弧

    Binary 2.0カンファレンス2006 に動画とIRCで参加してきました。 http://0xcc.net/blog/archives/000149.html 動画をキャプチャしながら見ていたので、IRCとのタイムラグが結構ありました。 技術的にはブログなどで既知のものが多かったんですが、PS3 LinuxでのプレゼンにWiiリモコン使うなど、ネタとしては面白かったです。 最初の質問で「gccの__attribute__はなぜ括弧が二重になっているのか?」というのがあって、そのときには思いつかなかったのですが、休憩中にひらめいてIRCにちょっと書き込みました。 19:32 >hamigaki< 多分、gcc以外でマクロで代用するためですよ>括弧 19:32 >hamigaki< 二重でないと、コンマがかけない これだけだと、分からない人もいたと思うのでちょっと解説しておきます。 そもそ

    かそくそうち - __attribute__の括弧
  • Owl's perspective: バイナリプランティングの防止

    とりあえず Embarcadero RAD Studio/Delphi/C++Builder 関係のあれやこれや。 Prism.jsによるコードのハイライトのテスト中。 IPAからも注意喚起が行われていますが、最近バイナリプランティング("Binary planting"、あるいは"DLL planting"、"DLL preloading"とも表現されます)という攻撃手法が問題になっています。これは(いわゆる"Known DLLs"を除く)絶対パス指定ではないDLLを検索するパスに"カレントディレクトリ"が含まれていて、状況によってはその優先順位が高いために攻撃者の用意した不正なDLLが実行プログラムにバインドされてしまう(通常はDLLをロードして初期化するだけでDLLMainが実行されてしまいますから、この時点で攻撃成立です)、というものです(これがが狭義の"DLL planting"

  • http://karetta.jp/article/book/229410/229414/commentList

  • はてなブログ | 無料ブログを作成しよう

    日記_2024.8.29 鞍馬と貴船 29日は鞍馬と貴船に行ってきました。こんな天気でバイクは無理、でも引きこもるのも嫌なので前々から行きたかった鞍馬と貴船に行くことにしました。ただ、いつ大雨が降っても全くおかしくないので天気がヤバそうなら帰ることにします。普通に日帰りできる距離ですから…

    はてなブログ | 無料ブログを作成しよう
  • Lua組み込み編

    ホーム < ゲームつくろー! < Lua組み込み編 Lua組み込み編 昨今のゲーム製作では「スクリプト」がすっかりお馴染みとなりました。スクリプト導入の理由は単純で、プログラムを再コンパイルする事無しにゲームを組み立てたりバランスを調整したいからです。新しいステージやキャラクタを、既存のプログラムを一切変更せずに追加できれば、それはもうとてつもない自由度とスピードを持った製作環境を得たことになります。また、ゲームを配布した後の有力なコンテンツ追加方法を得た事にもなります。昨今の超ボリュームなゲームが短期間で作れるようになったのは、スクリプトの力が認められて多くのゲーム制作に採用されたためでもあります。 スクリプトは自作ももちろん出来ますが、昨今はいわゆる「スクリプト言語」と言う専門の言語も多数登場しています。その中でC言語とのやり取りが簡単で高速に動くLuaは、ゲーム用スクリプトとして非常

  • C言語との連携 - 自主勉強会資料置き場

    Lua C/C++とLuaを連携させるときには、大きく分けて二通りのスタイル。C/C++側をメインとして作成するLua側をメインとして作成するC/C++がメインC/C++で実行ファイルを作成C/C++側に、Luaスクリプトを実行するVMを組み込むC/C++側から、必要に応じてLuaで作成した関数を呼び出す LuaがメインLua側でメインのロジックを実装描画処理や、計算負荷の高い処理などだけ、C/C++などで実装 C/C++で作成したdllをLua側からロードして利用する。 今回は、C/C++側をメインとして、必要に応じてC/C++側からLuaを呼び出すというスタイルを用います。LuaのVMの作成LuaのVMを組み込んだ最小のコードは以下のようになります。luaL_dofile()という関数で、指定した*.luaファイルを実行します。luaL_dostring()という関数を使うと、引数で渡

  • 闇プログラマーに喧嘩を売ってしまった昼下がり~条件分岐篇~

    ※このまとめに含まれるプログラムは一種のパズル的な遊びです。 くれぐれも用法用量を守った上で正しくご利用ください>< 実用するならば、“言うまでもなく” if か ?: を利用すべきです。 やばい連中に喧嘩を売ってしまった……。 続きを読む

    闇プログラマーに喧嘩を売ってしまった昼下がり~条件分岐篇~
  • 卜部昌平のあまりreblogしないtumblr

    エゴサーチで見かけた反応とそれの感想など 速さのためにはCでないと この誤解は典型的ですねえ。今、申し訳ないんだけど、普通に書いたCのコードと普通に書いたJavaのコード走らせると、普通に書いたJavaのコードの方が速くなるケース、全部とは言わんが案外と多いですよ。なんでかというと、Javaは普通に書いたらJVMが人類の持てるテクノロジの限りを尽くして勝手に高速化してくれる1が、Cはあなたの能力以上に速くはならない。Cは速いJavaは遅いってのは10年くらい前には正しかったんでしょうけどねえ。 なお自分でベンチマークしてる暇なんかないよ!という人はshootout.alioth.debian.orgぐらいは読んでもいいんじゃないですかね。たとえばJavaとCの比較で見れば全体的にいって同じくらいのスピード、いくつかの項目でJavaのほうが速いのが分かる。 組み込み屋はCでなければ何を使うか

    卜部昌平のあまりreblogしないtumblr
  • どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。

    確かにCでしか書けない類のプログラムは存在する(例を挙げるならKernel)が、それはCの存在を赦す理由にはならない。確かにCに輪をかけてさらにダメな類のプログラミング言語は存在する(例を挙げるならC++)が、それはCの存在を赦す理由にはならない。確かにCでしか書けないダメプログラマは存在する(例を挙げてほしければここにおまえの名前を入れろ)が、それはCの存在を赦す理由にはならない。結論:C死ね。 そもそも計算機にできて算盤にできないことなど存在しない。存在しないんだぞ。なのに何故人はプログラムを書くのか。それはオートメーションのためなのであり、奴隷的使役から人類の尊厳を開放して、この地上に楽園を築くためである。まあそこまで大上段に振りかぶって普段から書いてる輩はいないにせよ、プログラミングとは楽をするため、豊かな人生を実現するため、誰かの幸福のために行うものだ。違うか?じゃあなぜプログラ

    どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。
  • C言語の代表的なウェブリソース10選 - YAMDAS現更新履歴

    Top 10 C Language resources that will turn you into a better programmer - C and C++ Programming Resources 今更 C 言語かと言われそうだが、Linux カーネルだって、我々が利用している LL 言語の多くだってこの言語で書かれているのである。ワタシ自身は未だどの言語よりCを愛している。 以下に C 言語に関してウェブに公開されている代表的なリソースを挙げていく。さすがに更新が長らく止まっているものが多いが、それでも有用な情報源には違いない。ネタ元は Hacker News。 C Programming Notes Programming in C - UNIX System Calls and Subroutines using C. C Lesson by Chris Sawtell

    C言語の代表的なウェブリソース10選 - YAMDAS現更新履歴
  • LuaからC言語を呼び出す - たま〜にっき

    C言語の呼び出しが簡単なのがLuaの良いところ。tolua++というツールもあり、当に楽です。(tolua++は後でファイル置き場に置こうと思ってます。) ■手順はこんな感じです。 ①C言語ヘッダとソース書く。 ②ヘッダから公開したいもの切り出し、pkgファイルに。 ③tolua++起動し、LuaとCをつなぐグルーコードを作る。 ④グルーコード含めたC言語をDLL(so)にする。 ⑤Luaから呼び出す。 ただし、普通、プログラム書いたらビルドしないといけないですよね?①、④はそれと同じなので、CとLuaと連携する正味のコストというべきものは②と③だけなんです。ところが、この②、③がまたイイ!!むしろ、気持ちよくなるくらいのラクチンさなんですよ。。。ぜひ、試してみてほしいんです。 以下で、少しやってみましょう。 ①C言語のヘッダとソースを書く 次のようなC言語ソース書いてみます。 Luaで

    LuaからC言語を呼び出す - たま〜にっき
  • いやなブログ: Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか

    Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか 通常、Linux の共有ライブラリを作るときは各 .c ファイルを PIC (Position Independent Code) となるようコンパイルします。しかし、実は PIC でコンパイルしなくても共有ライブラリは作れます。それでは PIC にする意味はあるのでしょうか。 さっそく実験してみます。 int func () { printf(""); printf(""); printf(""); } PIC でコンパイルするには gcc に -fpic または -fPIC を渡します。-fpic の方が小さく高速なコードを生成する可能性がありますが、プロセッサによっては -fpic で生成できる GOT (Global Offset Table) のサイズに制限があります。一方、-fPIC はどのプロセッサで

  • const char* const

    const char* const の2つのconstがそれぞれが何の値を変更不可にするのかのまとめ。 const char* char* const const char* const const char* の変数は、定数データへのポインタです。中身の変更不可、アドレスの変更可です。 覚え方 *「アスタリスク」は、その左側すべてに係る。 ↓ 「const char」のポインタ ↓ 「文字を変更不可能な文字列」へのポインタ ↓ 中身の変更は不可、アドレスの変更は可 char szAAAAA[ ] = "AAAAA"; char szBBBBB[ ] = "BBBBB"; const char* pBuffer = szAAAAA; // 定数データへのポインタ pBuffer[1] = 'C'; // 不可(コンパイルエラー) pBuffer = szBBBBB; // 可(正しい) c

  • [C][Lua]テリブルテーブル

    Feedback # fvJASPKyBhbq 2012/01/07 7:31 http://www.luckyvitamin.com/c-204-red-yeast-rice Yeah, it is clear now !... From the very beginning I did not understand where was the connection with the title !!... # Do you have any video of that? I'd want to find out more details. 2019/05/05 22:49 Do you have any video of that? I'd want to find o Do you have any video of that? I'd want to find out more d

  • CSTL: CSTL リファレンスマニュアル

    0.7.0 概要 CSTLは、C++のSTLを模倣したC言語用のコンテナライブラリである。 CSTLは以下の特長を持つ。 STLと同様なデータ構造・アルゴリズムを提供。STLに似たインターフェイス。任意の型の要素に対応。大抵のC89準拠の処理系に移植可能。 インストール 手動でコピーする方法 SourceForge.JP からtarballをダウンロードする。 tarballを展開し、cstlディレクトリをインクルードパスの通ったディレクトリにコピーする。 SVNリポジトリからチェックアウトする方法 インクルードパスの通ったディレクトリに移動し、以下のコマンドを実行する。 最新スナップショットをチェックアウトする場合 ヘッダファイルのみなのでビルドする必要はない。 コンテナ CSTLは以下のコンテナを提供する。 vector 可変長配列。末尾での要素の挿入・削除が高速。インデックスによる要

  • mixi Engineers’ Blog >> 言語バインディングを書こう その弐

    東京ディズニーシーで買ってきたDuffyというテディベアがお気に入りで、頭に載せて寝るとよく眠れることを発見してウキウキのmikioです。さて今回は、Tokyo Cabinet(TC)のJavaバインディングとLuaバインディングの作り方と使い方について紹介します。 Javaバインディング TCのJavaバインディングの初版は昨年11月には出ていて別に新しい話題でもないのですが、以前とりあげた言語バインディングの記事ではJavaについて解説しなかったので、ここで改めてとりあげます。なお、この解説ででてくるサンプルコードを試すべく、環境変数「CLASSPATH」と環境変数「LD_LIBRARY_PATH」にカレントディレクトリを含めてください。 CLASSPATH=. LD_LIBRARY_PATH=. export CLASSPATH LD_LIBRARY_PATH Javaバインディング

    mixi Engineers’ Blog >> 言語バインディングを書こう その弐
  • ライブラリの構築

    第 6 章 ライブラリの構築 この章では、ライブラリの構築方法を説明します。 ライブラリとは ライブラリには 2 つの利点があります。まず、ライブラリを使えば、コードをいくつかのアプリケーションで共有できます。共有したいコードがある場合は、そのコードを含むライブラリを作成し、コードを必要とするアプリケーションとリンクできます。次に、ライブラリを使えば、非常に大きなアプリケーションの複雑さを軽減できます。アプリケーションの中の、比較的独立した部分をライブラリとして構築および保守することで、プログラマは他の部分の作業により専念できるようになるためです。 ライブラリの構築とは、.o ファイルを作成し (コードを -c オプションでコンパイルし)、これらの .o ファイルを CC コマンドでライブラリに結合することです。ライブラリには、静的 (アーカイブ) ライブラリと動的 (共有) ライブラリ