Pertanyaan Hasilkan kesalahan baca


Sangat mudah untuk menghasilkan kesalahan penulisan dalam rangkaian uji dengan menulis ke /dev/full. Apakah ada teknik yang bagus untuk menghasilkan kesalahan baca? Saat ini saya menggunakan LD_PRELOAD untuk mengganti read tetapi tampaknya terlalu rumit dan tidak portabel (bukan / dev / penuh portabel ...).


7
2018-06-27 14:28


asal


Jawaban:


Selain membaca dari direktori (seperti yang disebutkan dalam jawaban sebelumnya), Anda dapat mencoba membaca /proc/self/mem untuk mendapatkan kesalahan (ini harus Anda lakukan EIO di Linux). Untuk penjelasan, silakan lihat: https://unix.stackexchange.com/a/6302


5
2017-07-06 12:59



Suatu pendekatan yang berhasil pada semua penyatuan utama adalah menerapkan yang kecil SEKERING berkas sistem. EIO adalah kode kesalahan default ketika driver filesystem userspace Anda melakukan sesuatu yang salah, sehingga mudah untuk dicapai. Keduanya Perl dan Python bindings datang dengan contoh untuk memulai, Anda dapat dengan cepat menulis filesystem yang kebanyakan mencerminkan file yang ada tetapi menyuntikkan EIO di tempat-tempat yang dipilih dengan cermat.

Ada filesystem seperti itu: petardfs (artikel), Saya tidak tahu seberapa baik kerjanya di luar kotak.


4
2018-05-29 21:33



Menurut (OS X) membaca (2) halaman manual, membaca (2) akan menghasilkan kesalahan jika "[a] n upaya dilakukan untuk membaca direktori." Oleh karena itu Anda dapat membuka (2) direktori (pastikan prot tidak mengizinkan penulisan, atau ini akan melemparkan kesalahan) dan kemudian mencoba untuk membacanya. Itu tampak seperti satu-satunya kesalahan yang terdaftar di sana yang dapat terjadi dalam keadaan 'normal' (yaitu tanpa melakukan sesuatu seperti sengaja memecah struct FILE *).

Saya menganggap Anda sedang berbicara tentang membaca (2) kesalahan dalam C atau sesuatu seperti itu, tetapi bahkan dalam bahasa tingkat yang lebih tinggi, Anda mungkin dapat membuka direktori dan mencoba untuk membacanya (meskipun saya baru saja mencobanya dengan Python, dan itu terlalu pintar untuk membiarkan Anda membuka direktori ...)


2
2018-06-27 23:59



Anda juga bisa melewati pointer ilegal sebagai buffer untuk membaca, yang akan mengembalikan -EFAULT. Sesuatu seperti :

read(fd, (char *)0, cout);

Terima kasih Suzuki


1
2018-06-28 02:44