A function with multiple paths will result in multiple dead ended states after symbolic execution.
Each of these will have its own return value.
At the moment, we combine these into a claripy.Or operation (here) and take this as the symbolic return expression of the function.
In retrospect, I don't think this makes sense.
One possible alternative approach is that we create multiple ExtractedSymExpr objects (one per return state) and return all of these for SymbolicExpressionExtractor.extract.
However, since SymbolicExpressionExtractor.extract is a pretty central part to the project, we may want to think what the best way forward is.
A function with multiple paths will result in multiple dead ended states after symbolic execution.
Each of these will have its own return value.
At the moment, we combine these into a
claripy.Oroperation (here) and take this as the symbolic return expression of the function.In retrospect, I don't think this makes sense.
One possible alternative approach is that we create multiple
ExtractedSymExprobjects (one per return state) and return all of these forSymbolicExpressionExtractor.extract.However, since
SymbolicExpressionExtractor.extractis a pretty central part to the project, we may want to think what the best way forward is.