-
Notifications
You must be signed in to change notification settings - Fork 436
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unsound points-to results? #70
Comments
Is "targetNode" an object node or a value node? What's the points-to set of "targetNode"? |
"targetNode" is a value node and a TL pointer. It has just one object in its points_to set. The object is a memory object, specifically, FIObjNode.
|
It is correct to me. Your problem seems that |
|
Its value is always empty? How about the getAllValidPtrs()? You may wish to print the points to set of all pointers. |
And do intersection with the points to set of |
Still..I do not see the NodeID in the pointsto set of other (except for the once top-level node). However, as I explained, there are clearly other aliases. Any help on this is greatly appreciated! |
Please print points-to sets of all variables, so that we can have a look. It seems to me only one pointer points to the object. You may not get other aliased pointers. |
Another way to quickly check aliases is to insert a "MAYALIAS" stub function as an oracle (correct answer), SVF will verify the analysis results against the correct answer based on the "MAYALIAS" calls. See below: |
The bc file telnet.0.4.opt.mem2reg.bc.zip, of the Place where we store the In Function
The store function above looks funky, Does SVF correctly handle this kind of store statements? In Function
From the source code (telnet.c):
But, I do not see From the attached text file (all_aliases.txt.zip) containing points to information of all nodes, I do not see any points to for the target node:
|
Machiry, Your bc file and whole project is too large. It would be good for you to abstract a small program. I am happy to resolve the issue together with you from a small program since I usually don't have time to debug such large program for SVF users. I have gone through your problem. From my understanding The complicated store instruction will be broken down into a few sub instructions before pointer analysis (see https://github.com/SVF-tools/SVF/blob/master/lib/Util/BreakConstantExpr.cpp). You can try to see the points-to value of I think first you can try to see which pointer stores its value to Another way to do is to add some assertion checks to figure out the aliases, e.g., |
I debugged this. I was right, the
I have made the fix and create a pull request for the same. |
Great! Impressive that you have such good understanding of SVF. |
I am trying to find aliases for a pointer, specifically,
netibuf
.Target (simplified) source of the program (
telnet
):I use the following code:
The above doesn't print any aliases, however, as we can see in the program source above,
netibuf
has aliases. These results are not sound, Am I missing something here?Attached is the bc file telnet.0.4.opt.mem2reg.bc.zip, of the
telnet
, that I am using. The target source code is oftelnet
is available here: https://ftp.gnu.org/gnu/inetutils/inetutils-1.9.4.tar.gzThe text was updated successfully, but these errors were encountered: