mirror of
https://github.com/Proxmark/proxmark3.git
synced 2024-09-21 15:26:35 +08:00
adjust ManchesterEncode
removed dead size check added a max size of 2k input bits (4k out) this shouldn't overload the array memory passed to it typically...
This commit is contained in:
parent
ec187c2f9f
commit
86b8ecb56e
|
@ -308,15 +308,17 @@ uint32_t manchesterEncode2Bytes(uint16_t datain) {
|
|||
|
||||
//by marshmellow
|
||||
//encode binary data into binary manchester
|
||||
//NOTE: BitStream must have double the size available in memory to do the swap
|
||||
//NOTE: BitStream must have triple the size of "size" available in memory to do the swap
|
||||
int ManchesterEncode(uint8_t *BitStream, size_t size) {
|
||||
size_t modIdx=size, i=0;
|
||||
if (size>modIdx) return -1;
|
||||
//allow up to 4K out (means BitStream must be at least 2048+4096 to handle the swap)
|
||||
size = (size>2048) ? 2048 : size;
|
||||
size_t modIdx = size;
|
||||
size_t i;
|
||||
for (size_t idx=0; idx < size; idx++){
|
||||
BitStream[idx+modIdx++] = BitStream[idx];
|
||||
BitStream[idx+modIdx++] = BitStream[idx]^1;
|
||||
}
|
||||
for (; i<(size*2); i++){
|
||||
for (i=0; i<(size*2); i++){
|
||||
BitStream[i] = BitStream[i+size];
|
||||
}
|
||||
return i;
|
||||
|
|
Loading…
Reference in a new issue