diff -rubB gcc-15.1.0-base/libiberty/lrealpath.c 
gcc-15.1.0/libiberty/lrealpath.c
--- gcc-15.1.0-base/libiberty/lrealpath.c 2025-04-25 10:18:04.000000000 +0200
+++ gcc-15.1.0/libiberty/lrealpath.c 2025-05-09 16:49:35.228340555 +0200
@@ -303,4 +303,7 @@
return res;
}
#endif // _WIN32
+
+ /* This system is a lost cause, just duplicate the filename. */
+ return strdup (filename);
}

> On 05/09/2025 5:04 PM CEST Rink Springer <r...@rink.nu> wrote:
>  
>  
> Hi all!
>  
> Git commit e2bb55ec3b70cf45088bb73ba9ca990129328d60 (pr/108350) removes the 
> fallback scenario for lrealpath() when none of the #ifdef's match (in which 
> case the function is empty)
> In this situation, there is no return statement, and hence an uninitialized 
> pointer value is returned. This is bad, as make_relative_prefix_1() uses this 
> pointer and passes it to free().
>  
> This crashes in my hobby OS (https://github.com/zhmu/dogfood) as I do not 
> implement any of the proper lrealpath() scenarios  ;-) This is likely not an 
> issue for any real use case, but I'm submitting this to prevent others from 
> having to chase this.
>  
> I've attached a simple patch that restores the fallback behaviour (return 
> strdup(filename);) which it did prior to pr/108350.
>  
> Regards,
> Rink
> 

Reply via email to