viperproject / viperproject/VerifiedSCION
Finish `prepareSCMP`
Open
Nobody has claimed this yet.
lowpriority
memory-safety
partially-verified
router
- Dominant language
- Go
- Stars
- 12
- Forks
- 5
- Avg merge
- 13h 2m
- Merged PRs (30d)
- 4
Description
- introduce ghost field in
*SCIONfor when some package is manually created vs when it is obtained from decoding from bytes- verify fns that come from the go packet layer interfaces for both cases,
- DecodeFromBytes should set the
manuallyBuiltflag tofalseand should have a postcondition expressing that.
- DecodeFromBytes should set the
- identify functions which are called only for one value of 'manuallyCreated' and add it as precondition/simplify the specs of these functions (e.g.,
SetSrcAddr,GetAddr) - Add public getter for this field to use in spec
- verify fns that come from the go packet layer interfaces for both cases,
- simplify
*SCION.Mem()by removing duplicated expressions with lets - remove the instance of
HeaderMemfromMem(), fold it when needed and remove fractional permissions from the body, pass fractional permission to HeaderMem instead- this will allow us to write
acc(s)instead of explicit access to all fields
- this will allow us to write
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at prepareSCMP and *SCION.Mem(), then trace DecodeFromBytes, SetSrcAddr, and GetAddr in the Go packet layer. Review how manually-created and decoded SCION values are specified, and confirm the ghost field, preconditions, postconditions, and simplified memory permissions are consistent when the specification is complete.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- networking
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100