's(addr) -> str
Leak bytes at `addr` until failure or a nullbyte is found
Return:
A string, without a NULL terminator.
The returned string will be empty if the first byte is
a NULL terminator, or if the first byte could not be
retrieved.
Examples:
>>> data = "Hello\x00World"
>>> l = MemLeak(lambda a: data[a:a+4], reraise=False)
>>> l.s(0) == "Hello"
True
>>> l.s(5) == ""
True
>>> l.s(6) == "World"
True
>>> l.s(999) == ""
True'

def s(self, addr):

    orig = addr
    while self.b(addr):
        addr += 1
    return self._leak(orig, (addr - orig))
