diff --git a/src/frame.c b/src/frame.c index f5a8f35..3e53a40 100644 --- a/src/frame.c +++ b/src/frame.c @@ -3,8 +3,9 @@ #include -static ssize_t validate_station(void *data, - off_t offset) { +static ssize_t decode_station(patty_ax25_addr *addr, + void *data, + off_t offset) { int i, space = 0; for (i=0; irepeaters[i], data, offset)) < 0) { goto error; } else { - memcpy(&frame->repeaters[i], addr, sizeof(*addr)); - offset += decoded; } @@ -86,19 +87,15 @@ static ssize_t decode_address(patty_ax25_frame *frame, off_t offset = start; ssize_t decoded; - if ((decoded = validate_station(data, offset)) < 0) { + if ((decoded = decode_station(&frame->dest, data, offset)) < 0) { goto error; } else { - memcpy(&frame->dest, ((uint8_t *)data) + offset, sizeof(frame->dest)); - offset += decoded; } - if ((decoded = validate_station(data, offset)) < 0) { + if ((decoded = decode_station(&frame->src, data, offset)) < 0) { goto error; } else { - memcpy(&frame->src, ((uint8_t *)data) + offset, sizeof(frame->src)); - offset += decoded; }