আমি যখন লিনাক্স উত্স কোডটি পড়ছিলাম এবং আরও বিশেষত সিস্টেম কল কোডটি পড়ছিলাম, আমি sys_reboot
বাস্তবায়নটি দেখতে পেয়েছি : http://lxr.free-electrons.com/source/kernel/reboot.c#L199 ।
199 SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
200 void __user *, arg)
201 {
202 ...
...
286 }
মাঝখানে, কোডের এই নির্দিষ্ট অংশটি রয়েছে:
209
210 /* For safety, we require "magic" arguments. */
211 if (magic1 != LINUX_REBOOT_MAGIC1 ||
212 (magic2 != LINUX_REBOOT_MAGIC2 &&
213 magic2 != LINUX_REBOOT_MAGIC2A &&
214 magic2 != LINUX_REBOOT_MAGIC2B &&
215 magic2 != LINUX_REBOOT_MAGIC2C))
216 return -EINVAL;
আমি আশ্চর্য হই যে এটি আসলে কী ধরণের "সুরক্ষা" সরবরাহ করে। মানে, এটি কি অপব্যবহার রোধ করা যায়? এই ক্ষেত্রে, প্যারামিটারগুলি সর্বজনীন হওয়ায় যে কোনও গ্রন্থাগার বা অ্যাপ্লিকেশন প্যারামিতিগুলি পাস করার পরেও সিস্টেম কলটির অপব্যবহার করতে পারে। আমি কি থেকে বাতিল হলাম?
getpid
অবশ্যই এবং এর মতো ব্যতীত , অপব্যবহার করা হলে এগুলির সমস্তেরই অনাকাঙ্ক্ষিত পরিণতি হতে পারে। অথবা হতে পারে, অন্য সমস্ত সিস্টেমে ইতিমধ্যে পর্যাপ্ত প্যারামিটারগুলি পরীক্ষা করা আছে যাতে তারা ভুলভাবে ডাকা হয় them এটি আমার কাছে "সুরক্ষা" সম্পর্কে একটি অদ্ভুত ধারণা বলে মনে হচ্ছে, যদিও ...