426f573 script: Avoid a use-after-free when redefining a function during execution

4 files Authored by Chris Coulson 3 years ago, Committed by Daniel Kiper 3 years ago,
    script: Avoid a use-after-free when redefining a function during execution
    
    Defining a new function with the same name as a previously defined
    function causes the grub_script and associated resources for the
    previous function to be freed. If the previous function is currently
    executing when a function with the same name is defined, this results
    in use-after-frees when processing subsequent commands in the original
    function.
    
    Instead, reject a new function definition if it has the same name as
    a previously defined function, and that function is currently being
    executed. Although a behavioural change, this should be backwards
    compatible with existing configurations because they can't be
    dependent on the current behaviour without being broken.
    
    Fixes: CVE-2020-15706
    
    Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
    Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
    
        
file modified
+2 -0
file modified
+13 -3
file modified
+2 -1
file modified
+2 -0