about summary refs log tree commit diff
path: root/sourcecodes/mat_structure.php
diff options
context:
space:
mode:
authorClaude Sonnet 52026-08-17 19:26:43 +0000
committerFrederick Muriuki Muriithi2026-08-17 14:53:08 -0500
commit9cae7ea19c7c744a1ed2bd997571ec1b516a0d32 (patch)
treece73195519a319bb0dc72d75df4d77a8ac584141 /sourcecodes/mat_structure.php
parent4825da8e49c302392fe6018862dfcdd6f91c6192 (diff)
downloadBNW-9cae7ea19c7c744a1ed2bd997571ec1b516a0d32.tar.gz
Guard fopen() results with a false-check before fwrite/fprintf/fclose
On PHP 7.4, calling fwrite()/fprintf()/fclose() with a false handle
(a failed fopen(), e.g. from a bad path, missing directory, or
permissions issue) just emits a warning and no-ops. On PHP 8.0+, these
functions require a resource argument and throw an uncaught TypeError
instead, turning what used to be a silent degradation into a fatal
crash of the whole request.

This patch wraps every fopen()-then-write call site in the codebase
(18 files) with an `if ($handle !== false) { ... }` check, matching
the existing pattern used elsewhere in the codebase. Where the same
$fpvar handle is threaded through shared helper functions
(enter_ban_list/banlist/whitelist, duplicated across
remove_variables_processing.php, remove_variables_processing_default.php,
modify_structure_learning.php and tier_description_processing_gom.php),
the guard was added inside those functions too for consistency, even
though the call sites are currently dead/commented-out in three of the
four files — so the same landmine doesn't reappear if that code is
ever re-enabled.

Verified empirically against PHP 8.3.28: fopen() on an unwritable path
followed by fwrite() on the resulting `false` throws
  TypeError: fwrite(): Argument #1 ($stream) must be of type resource, false given
without the guard; with the guard, the call is skipped instead of
crashing. The normal (successful fopen) path was also re-run through
mat_structure.php's structure_change() and still produces identical
output to before the change.

Reviewed by: Frederick M Muriithi <fredmanglis@gmail.com>
Diffstat (limited to 'sourcecodes/mat_structure.php')
-rw-r--r--sourcecodes/mat_structure.php14
1 files changed, 8 insertions, 6 deletions
diff --git a/sourcecodes/mat_structure.php b/sourcecodes/mat_structure.php
index 29bdb854..f4e80290 100644
--- a/sourcecodes/mat_structure.php
+++ b/sourcecodes/mat_structure.php
@@ -48,6 +48,7 @@ $i++;
 
 
 $j=0;
+if ($fp !== false) {
 for($l=0;$l<=$i;$l++)
 {
   $line=$arrname[$l];
@@ -55,23 +56,24 @@ for($l=0;$l<=$i;$l++)
   if($j==0)
   {
     fwrite($fp,$line);
-    
+
   }
   else
-  {  
-   
+  {
+
     $data_cell=explode("\t",$line);
-  
+
     for($k=0;$k<$i;$k++)
     {
        $cell=$data_cell[$k]*$cell_val[$k];
        fprintf($fp,"%s\t",$cell);
-    } 
+    }
   }
   fprintf($fp,"\n");
- 
+
   $j++;
 }
+}
 
 //return $matfilestruct;
 }