From 30997471e7826931717aaf26436e24568a4d7c3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Wed, 13 May 2015 06:31:20 +0200 Subject: Use getservbyname() on undetermined ports --- ponymap.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/ponymap.c b/ponymap.c index 4f9485e..cb4abd5 100644 --- a/ponymap.c +++ b/ponymap.c @@ -1374,15 +1374,26 @@ target_dump_json (struct target *self, struct target_dump_data *data) size_t block = 8 * sizeof *data->undetermined; for (size_t i = 0; i < 65536 / block; i++) - for (size_t k = 0; k < block; k++) - { - if (!(data->undetermined[i] & (1 << k))) - continue; + for (size_t k = 0; k < block; k++) + { + if (!(data->undetermined[i] & (1 << k))) + continue; - service = json_object (); - json_object_set_new (service, "port", json_integer (i * block + k)); - json_array_append_new (undetermined, service); - } + service = json_object (); + json_object_set_new (service, "port", json_integer (i * block + k)); + json_array_append_new (undetermined, service); + } +} + +static void +target_dump_terminal_undetermined (uint16_t port_no, struct node ***tail) +{ + struct servent *serv = getservbyport (ntohs (port_no), "tcp"); + struct node *port = **tail = node_new (serv + ? xstrdup_printf ("port %" PRIu16 " (%s)", + port_no, serv->s_name) + : xstrdup_printf ("port %" PRIu16, port_no)); + *tail = &port->next; } static void @@ -1436,15 +1447,9 @@ target_dump_terminal (struct target *self, struct target_dump_data *data) size_t block = 8 * sizeof *data->undetermined; for (size_t i = 0; i < 65536 / block; i++) - for (size_t k = 0; k < block; k++) - { - if (!(data->undetermined[i] & (1 << k))) - continue; - - port = *p_tail = node_new (xstrdup_printf - ("port %" PRIu16, (uint16_t) (i * block + k))); - p_tail = &port->next; - } + for (size_t k = 0; k < block; k++) + if ((data->undetermined[i] & (1 << k))) + target_dump_terminal_undetermined (i * block + k, &p_tail); } node_print_tree (root); -- cgit v1.2.3