Skip to content
Snippets Groups Projects
Commit 1f09d997 authored by Daniel Salzman's avatar Daniel Salzman
Browse files

knotc: fix key parsing and ACL check with network socket

Reported by Motomu Utsumi.
parent 1854b3e0
No related branches found
No related tags found
No related merge requests found
......@@ -310,7 +310,7 @@ static int tsig_parse_str(knot_tsig_key_t *key, const char *str)
if (s) {
*s++ = '\0'; /* Last part separator */
knot_lookup_table_t *alg = NULL;
alg = knot_lookup_by_name(knot_tsig_alg_dnames_str, h);
alg = knot_lookup_by_name(knot_tsig_alg_names, h);
if (alg) {
algorithm = alg->id;
} else {
......
......@@ -461,7 +461,8 @@ int remote_poll(int sock)
return fdset_pselect(sock + 1, &rfds, NULL, NULL, NULL, NULL);
}
int remote_recv(int sock, struct sockaddr *addr, uint8_t* buf, size_t *buflen)
int remote_recv(int sock, struct sockaddr_storage *addr, uint8_t *buf,
size_t *buflen)
{
int c = tcp_accept(sock);
if (c < 0) {
......@@ -469,6 +470,13 @@ int remote_recv(int sock, struct sockaddr *addr, uint8_t* buf, size_t *buflen)
return c;
}
socklen_t addrlen = sizeof(*addr);
if (getpeername(c, (struct sockaddr *)addr, &addrlen) != 0) {
dbg_server("remote: failed to get remote address\n");
close(c);
return KNOT_ECONNREFUSED;
}
/* Receive data. */
int n = tcp_recv_msg(c, buf, *buflen, NULL);
*buflen = n;
......@@ -755,7 +763,7 @@ int remote_process(server_t *s, conf_iface_t *ctl_if, int sock,
memset(&ss, 0, sizeof(struct sockaddr_storage));
/* Accept incoming connection and read packet. */
int client = remote_recv(sock, (struct sockaddr *)&ss, pkt->wire, &buflen);
int client = remote_recv(sock, &ss, pkt->wire, &buflen);
if (client < 0) {
dbg_server("remote: couldn't receive query = %d\n", client);
knot_pkt_free(&pkt);
......
......@@ -78,7 +78,8 @@ int remote_poll(int sock);
* \return client TCP socket if success.
* \return KNOT_ECONNREFUSED if fails to receive command.
*/
int remote_recv(int sock, struct sockaddr *addr, uint8_t* buf, size_t *buflen);
int remote_recv(int sock, struct sockaddr_storage *addr, uint8_t *buf,
size_t *buflen);
/*!
* \brief Parse a RC command.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment