about summary refs log tree commit diff
path: root/sourcecodes/remove_variables.php
diff options
context:
space:
mode:
authorClaude Sonnet 52026-08-17 19:32:03 +0000
committerFrederick Muriuki Muriithi2026-08-17 14:53:21 -0500
commita1f64bda77d74026d663eca91b975a6ff869d9a3 (patch)
tree59936fff9d795fbe76ac1924c34741c83d2808ae /sourcecodes/remove_variables.php
parent9cae7ea19c7c744a1ed2bd997571ec1b516a0d32 (diff)
downloadBNW-a1f64bda77d74026d663eca91b975a6ff869d9a3.tar.gz
Guard arithmetic on file/shell-output-derived values against non-numeric strings
PHP 8 throws a fatal TypeError for arithmetic (+ - * /) on a
non-numeric string ("Unsupported operand types"); PHP 7.4 only warned
and treated it as 0. Several files perform arithmetic directly on
values parsed from intermediate state files (nnode.txt, nrows.txt,
structure_input*.txt) or from `dot -Tplain` output, with no
is_numeric() check — safe as long as those files are well-formed, but
a crash risk if a file is missing/empty/truncated or a `dot` output
line doesn't parse as expected.

Affected: runtime_check.php ($node, $nrows), remove_variables.php and
create_tiers_gom_part1.php ($maxplist=$node-1), mat_structure.php
(matrix cell multiplication), and the four network_layout_{evd,inv}[,_2].php
files ($r_index=$node+N and the dot-output-derived $cell arithmetic in
the _2 variants).

Fix pattern: coalesce to 0 via `is_numeric($x) ? $x : 0` before the
arithmetic, matching PHP 7.4's original fallback-to-0 behavior instead
of crashing.

Verified empirically against PHP 8.3.28 with runtime_check.php and
mat_structure.php: previously, a missing/empty source file caused
  TypeError: Unsupported operand types: string - int (or string * int)
after the fix, the same missing-file scenario produces only the
pre-existing "undefined array key" warnings (same as PHP 7.4) and the
function completes and returns a value instead of crashing.

Reviewed by: Frederick M Muriithi <fredmanglis@gmail.com>
Diffstat (limited to 'sourcecodes/remove_variables.php')
-rw-r--r--sourcecodes/remove_variables.php2
1 files changed, 1 insertions, 1 deletions
diff --git a/sourcecodes/remove_variables.php b/sourcecodes/remove_variables.php
index 0d925050..04d2ce9a 100644
--- a/sourcecodes/remove_variables.php
+++ b/sourcecodes/remove_variables.php
@@ -64,7 +64,7 @@ if($structure_thr=="")
 
 $nf=$dir.$keyval."nnode.txt";
 $node=trim(file_get_contents("$nf"));
-$maxplist=$node-1;
+$maxplist=(is_numeric($node) ? $node : 0)-1;
 
 //print default number of parents
 $pfile=$dir.$keyval."parent.txt";