Nmap Development mailing list archives
Re: [PATCH] Make new UDP-payload code reusable.
From: "Luis M." <luis.mgarc () gmail com>
Date: Tue, 07 Jul 2009 19:09:12 +0200
David Fifield wrote:
If you're going to do that, I would prefer another layer of abstraction in order to keep the calling code simple. In other words, I want a function like get_udp_payload that does both 1) check if o.extra_payload_length is set, and 2) looks up a payload if it is not. So I would prefer, rather than moving part of the function into the caller, rather to factor the port-specific payload lookup into its own function, which get_udp_payload would call. The function that checks o.extra_payload_length would be Nmap-specific, and the sub-function could be shared between Nmap and Nping. David Fifield
Yes, that makes sense. I enclose another patch. It uses function udp_port2payload(), that can be reused, while keeping the original behavior in get_udp_payload(). Let me know what you think. Regards, Luis.
Index: payload.cc
===================================================================
--- payload.cc (revision 14088)
+++ payload.cc (working copy)
@@ -92,6 +92,7 @@
#include "NmapOps.h"
#include "nbase.h"
+#include "payload.h"
extern NmapOps o;
@@ -131,18 +132,28 @@
static const char payload_null[] = "";
+
/* Get a payload appropriate for the given UDP port. If --data-length was used,
returns the global random payload. Otherwise, for certain selected ports a
payload is returned, and for others a zero-length payload is returned. The
length is returned through the length pointer. */
const char *get_udp_payload(u16 dport, size_t *length) {
- const char *payload;
if (o.extra_payload_length > 0) {
*length = o.extra_payload_length;
return o.extra_payload;
}
+ else
+ return udp_port2payload(dport, length);
+}
+
+/* Get a payload appropriate for the given UDP port. For certain selected
+ ports a payload is returned, and for others a zero-length payload is
+ returned. The length is returned through the length pointer.*/
+const char *udp_port2payload(u16 dport, size_t *length){
+ const char *payload;
+
#define SET_PAYLOAD(p) do { *length = sizeof(p) - 1; payload = (p); } while (0)
switch (dport) {
@@ -172,4 +183,6 @@
}
return payload;
+
}
+
Index: payload.h
===================================================================
--- payload.h (revision 14088)
+++ payload.h (working copy)
@@ -90,3 +90,4 @@
/* $Id$ */
const char *get_udp_payload(u16 dport, size_t *length);
+const char *udp_port2payload(u16 dport, size_t *length);
_______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://SecLists.Org
Current thread:
- [PATCH] Make new UDP-payload code reusable. Luis M. (Jul 07)
- Re: [PATCH] Make new UDP-payload code reusable. David Fifield (Jul 07)
- Re: [PATCH] Make new UDP-payload code reusable. Luis M. (Jul 07)
- Re: [PATCH] Make new UDP-payload code reusable. David Fifield (Jul 07)
- Re: [PATCH] Make new UDP-payload code reusable. Luis M. (Jul 07)
- Re: [PATCH] Make new UDP-payload code reusable. Fyodor (Jul 07)
- Re: [PATCH] Make new UDP-payload code reusable. David Fifield (Jul 07)
