From af72c655105c3d0d78a4db8f885799b13ac6ac64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Sat, 17 Jan 1998 19:00:11 +0100 Subject: [PATCH] read_file() and read_bytes() now only allow regular files. Rev: lib/modules/Stdio.pmod:1.8 --- lib/modules/Stdio.pmod | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/modules/Stdio.pmod b/lib/modules/Stdio.pmod index 5f07e00888..8e3317accb 100644 --- a/lib/modules/Stdio.pmod +++ b/lib/modules/Stdio.pmod @@ -155,6 +155,15 @@ string read_file(string filename,void|int start,void|int len) f=FILE(); if(!f->open(filename,"r")) return 0; + // Disallow devices and directories. + array st; + if (f->stat && (st = f->stat()) && (st[1] < 0)) { + throw(({ sprintf("Stdio.read_file(): File \"%s\" is not a regular file!\n", + filename), + backtrace() + })); + } + switch(query_num_arg()) { case 1: @@ -187,6 +196,15 @@ string read_bytes(string filename,void|int start,void|int len) if(!f->open(filename,"r")) return 0; + // Disallow devices and directories. + array st; + if (f->stat && (st = f->stat()) && (st[1] < 0)) { + throw(({sprintf("Stdio.read_bytes(): File \"%s\" is not a regular file!\n", + filename), + backtrace() + })); + } + switch(query_num_arg()) { case 1: -- GitLab