Fix issues encoding extended frame control fields

Changes:

    * When encoding extended frame control fields, ensure the least
      significant byte is written first, as per the AX.25 v2.2 standard
This commit is contained in:
XANTRONIX Development 2020-07-19 20:27:56 -04:00 committed by XANTRONIX Industrial
parent 8b741cadc8
commit d494ffecfc

View file

@ -332,14 +332,19 @@ ssize_t patty_ax25_sock_send(patty_ax25_sock *sock,
offset = addr_copy_to_buf(buf, sock, cr); offset = addr_copy_to_buf(buf, sock, cr);
if (sock->mode == PATTY_AX25_SOCK_SABME) { if (sock->mode == PATTY_AX25_SOCK_SABME) {
buf[offset++] = (control & 0xff00) >> 8; buf[offset++] = control & 0x00ff;
buf[offset++] = control & 0x00ff;
if (!(PATTY_AX25_FRAME_CONTROL_U(control))) {
buf[offset++] = (control & 0xff00) >> 8;
}
} else { } else {
buf[offset++] = control; buf[offset++] = control;
} }
if (info) { if (info) {
buf[offset++] = (uint8_t)sock->proto; if (PATTY_AX25_FRAME_CONTROL_I(control)) {
buf[offset++] = (uint8_t)sock->proto;
}
memcpy(buf + offset, info, infolen); memcpy(buf + offset, info, infolen);
offset += infolen; offset += infolen;
@ -498,9 +503,7 @@ ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock) {
| PATTY_AX25_PARAM_HDLC_MODULO_128 | PATTY_AX25_PARAM_HDLC_MODULO_128
| PATTY_AX25_PARAM_HDLC_SYNC_TX; | PATTY_AX25_PARAM_HDLC_SYNC_TX;
params.info_tx = sock->n_maxlen_tx;
params.info_rx = sock->n_maxlen_rx; params.info_rx = sock->n_maxlen_rx;
params.window_tx = sock->n_window_tx;
params.window_rx = sock->n_window_rx; params.window_rx = sock->n_window_rx;
params.ack = sock->n_ack; params.ack = sock->n_ack;
params.retry = sock->n_retry; params.retry = sock->n_retry;