Skip to content

Commit b25a0da

Browse files
committed
packing: Force keyword syntax for sign argument
1 parent 116a49d commit b25a0da

File tree

2 files changed

+19
-18
lines changed

2 files changed

+19
-18
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ The table below shows which release corresponds to each branch, and what date th
7474

7575
## 5.0.0 (`dev`)
7676
- [#2526][2526] Properly make use of extra arguments in `packing` utilities.
77+
`sign` parameter requires keyword syntax to specify it.
7778

7879
## 4.15.0 (`beta`)
7980
- [#2508][2508] Ignore a warning when compiling with asm on nix

pwnlib/util/packing.py

+18-18
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ def routine(data, stacklevel=None):
332332
#
333333
# Make normal user-oriented packers, e.g. p8
334334
#
335-
def _do_packing(op, size, number, endianness=None, sign=None):
335+
def _do_packing(op, size, number, endianness=None):
336336

337337
name = "%s%s" % (op,size)
338338
mod = sys.modules[__name__]
@@ -343,14 +343,14 @@ def _do_packing(op, size, number, endianness=None, sign=None):
343343
bu = getattr(mod, "_%sbu" % (name))
344344

345345
endian = endianness or context.endian
346-
signed = sign or context.signed
346+
signed = context.signed
347347
return {("little", True ): ls,
348348
("little", False): lu,
349349
("big", True ): bs,
350350
("big", False): bu}[endian, signed](number, 3)
351351

352352
@LocalNoarchContext
353-
def p8(number, endianness = None, sign = None, **kwargs):
353+
def p8(number, endianness = None, **kwargs):
354354
"""p8(number, endianness, sign, ...) -> bytes
355355
356356
Packs an 8-bit integer
@@ -365,10 +365,10 @@ def p8(number, endianness = None, sign = None, **kwargs):
365365
Returns:
366366
The packed number as a byte string
367367
"""
368-
return _do_packing('p', 8, number, endianness, sign)
368+
return _do_packing('p', 8, number, endianness)
369369

370370
@LocalNoarchContext
371-
def p16(number, endianness = None, sign = None, **kwargs):
371+
def p16(number, endianness = None, **kwargs):
372372
"""p16(number, endianness, sign, ...) -> bytes
373373
374374
Packs an 16-bit integer
@@ -390,10 +390,10 @@ def p16(number, endianness = None, sign = None, **kwargs):
390390
>>> p16(0x4142, endianness='big')
391391
b'AB'
392392
"""
393-
return _do_packing('p', 16, number, endianness, sign)
393+
return _do_packing('p', 16, number, endianness)
394394

395395
@LocalNoarchContext
396-
def p32(number, endianness = None, sign = None, **kwargs):
396+
def p32(number, endianness = None, **kwargs):
397397
"""p32(number, endianness, sign, ...) -> bytes
398398
399399
Packs an 32-bit integer
@@ -415,10 +415,10 @@ def p32(number, endianness = None, sign = None, **kwargs):
415415
>>> p32(0x41424344, endianness='big')
416416
b'ABCD'
417417
"""
418-
return _do_packing('p', 32, number, endianness, sign)
418+
return _do_packing('p', 32, number, endianness)
419419

420420
@LocalNoarchContext
421-
def p64(number, endianness = None, sign = None, **kwargs):
421+
def p64(number, endianness = None, **kwargs):
422422
"""p64(number, endianness, sign, ...) -> bytes
423423
424424
Packs an 64-bit integer
@@ -440,10 +440,10 @@ def p64(number, endianness = None, sign = None, **kwargs):
440440
>>> p64(0x4142434445464748, endianness='big')
441441
b'ABCDEFGH'
442442
"""
443-
return _do_packing('p', 64, number, endianness, sign)
443+
return _do_packing('p', 64, number, endianness)
444444

445445
@LocalNoarchContext
446-
def u8(data, endianness = None, sign = None, **kwargs):
446+
def u8(data, endianness = None, **kwargs):
447447
"""u8(data, endianness, sign, ...) -> int
448448
449449
Unpacks an 8-bit integer
@@ -458,10 +458,10 @@ def u8(data, endianness = None, sign = None, **kwargs):
458458
Returns:
459459
The unpacked number
460460
"""
461-
return _do_packing('u', 8, data, endianness, sign)
461+
return _do_packing('u', 8, data, endianness)
462462

463463
@LocalNoarchContext
464-
def u16(data, endianness = None, sign = None, **kwargs):
464+
def u16(data, endianness = None, **kwargs):
465465
"""u16(data, endianness, sign, ...) -> int
466466
467467
Unpacks an 16-bit integer
@@ -476,10 +476,10 @@ def u16(data, endianness = None, sign = None, **kwargs):
476476
Returns:
477477
The unpacked number
478478
"""
479-
return _do_packing('u', 16, data, endianness, sign)
479+
return _do_packing('u', 16, data, endianness)
480480

481481
@LocalNoarchContext
482-
def u32(data, endianness = None, sign = None, **kwargs):
482+
def u32(data, endianness = None, **kwargs):
483483
"""u32(data, endianness, sign, ...) -> int
484484
485485
Unpacks an 32-bit integer
@@ -494,10 +494,10 @@ def u32(data, endianness = None, sign = None, **kwargs):
494494
Returns:
495495
The unpacked number
496496
"""
497-
return _do_packing('u', 32, data, endianness, sign)
497+
return _do_packing('u', 32, data, endianness)
498498

499499
@LocalNoarchContext
500-
def u64(data, endianness = None, sign = None, **kwargs):
500+
def u64(data, endianness = None, **kwargs):
501501
"""u64(data, endianness, sign, ...) -> int
502502
503503
Unpacks an 64-bit integer
@@ -512,7 +512,7 @@ def u64(data, endianness = None, sign = None, **kwargs):
512512
Returns:
513513
The unpacked number
514514
"""
515-
return _do_packing('u', 64, data, endianness, sign)
515+
return _do_packing('u', 64, data, endianness)
516516

517517
def make_packer(word_size = None, sign = None, **kwargs):
518518
"""make_packer(word_size = None, endianness = None, sign = None) -> number → str

0 commit comments

Comments
 (0)