|  | 
| 16 | 16 | # Functions to read and write SR metadata | 
| 17 | 17 | # | 
| 18 | 18 | 
 | 
| 19 |  | -from sm_typing import ClassVar, override | 
|  | 19 | +from sm_typing import Tuple, ClassVar, override | 
| 20 | 20 | 
 | 
| 21 | 21 | from abc import abstractmethod | 
| 22 | 22 | 
 | 
| @@ -138,11 +138,11 @@ def file_read_wrapper(fd, offset, bytesToRead=METADATA_BLK_SIZE): | 
| 138 | 138 |             ([fd, offset, bytesToRead], e.errno)) | 
| 139 | 139 | 
 | 
| 140 | 140 | 
 | 
| 141 |  | -def to_utf8(s): | 
|  | 141 | +def to_utf8(s: str) -> bytes: | 
| 142 | 142 |     return s.encode("utf-8") | 
| 143 | 143 | 
 | 
| 144 | 144 | 
 | 
| 145 |  | -def from_utf8(bs): | 
|  | 145 | +def from_utf8(bs: bytes) -> str: | 
| 146 | 146 |     return bs.decode("utf-8") | 
| 147 | 147 | 
 | 
| 148 | 148 | 
 | 
| @@ -182,13 +182,14 @@ def buildHeader(length, major=metadata.MD_MAJOR, minor=metadata.MD_MINOR): | 
| 182 | 182 |                    + str(minor)) | 
| 183 | 183 | 
 | 
| 184 | 184 | 
 | 
| 185 |  | -def unpackHeader(header): | 
| 186 |  | -    vals = from_utf8(header).split(HEADER_SEP) | 
|  | 185 | +def unpackHeader(header: bytes) -> Tuple[str, str, str, str]: | 
|  | 186 | +    decoded = from_utf8(header) | 
|  | 187 | +    if len(decoded.rstrip('\x00')) == 0: | 
|  | 188 | +        raise xs_errors.XenError('MetadataError', opterr='Empty header') | 
|  | 189 | +    vals = decoded.split(HEADER_SEP) | 
| 187 | 190 |     if len(vals) != 4 or vals[0] != metadata.HDR_STRING: | 
| 188 |  | -        util.SMlog("Exception unpacking metadata header: " | 
| 189 |  | -                   "Error: Bad header '%s'" % (header)) | 
| 190 |  | -        raise xs_errors.XenError('MetadataError', \ | 
| 191 |  | -                        opterr='Bad header') | 
|  | 191 | +        util.SMlog(f"Exception unpacking metadata header: Error: Bad header {header!r}") | 
|  | 192 | +        raise xs_errors.XenError('MetadataError', opterr='Bad header') | 
| 192 | 193 |     return (vals[0], vals[1], vals[2], vals[3]) | 
| 193 | 194 | 
 | 
| 194 | 195 | 
 | 
|  | 
0 commit comments