@@ -0,0 +1,37 @@
$OpenBSD$
--- gw/msg-decl.h.orig Sat May 12 13:44:06 2012
+++ gw/msg-decl.h Sun May 13 01:49:28 2012
@@ -83,7 +83,7 @@ MSG(sms,
OCTSTR(receiver)
OCTSTR(udhdata)
OCTSTR(msgdata)
- INTEGER(time)
+ TIME_T(time)
OCTSTR(smsc_id)
OCTSTR(smsc_number)
OCTSTR(foreign_id)
@@ -109,14 +109,14 @@ MSG(sms,
VOID(split_parts)
INTEGER(priority)
INTEGER(resend_try)
- INTEGER(resend_time)
+ TIME_T(resend_time)
OCTSTR(meta_data)
})

MSG(ack,
{
INTEGER(nack)
- INTEGER(time)
+ TIME_T(time)
UUID(id)
})

@@ -131,6 +131,7 @@ MSG(wdp_datagram,

#undef MSG
#undef INTEGER
+#undef TIME_T
#undef OCTSTR
#undef UUID
#undef VOID
@@ -0,0 +1,107 @@
$OpenBSD$
--- gw/msg.c.orig Sat May 12 13:44:06 2012
+++ gw/msg.c Sun May 13 11:44:17 2012
@@ -80,12 +80,12 @@ static void append_string(Octstr *os, Octstr *field);
static void append_uuid(Octstr *os, uuid_t id);

static int parse_integer(long *i, Octstr *packed, int *off);
+static int parse_time_t(time_t *i, Octstr *packed, int *off);
static int parse_string(Octstr **os, Octstr *packed, int *off);
static int parse_uuid(uuid_t id, Octstr *packed, int *off);

static char *type_as_str(Msg *msg);

-
/**********************************************************************
* Implementations of the exported functions.
*/
@@ -99,6 +99,7 @@ Msg *msg_create_real(enum msg_type type, const char *f

msg->type = type;
#define INTEGER(name) p->name = MSG_PARAM_UNDEFINED;
+#define TIME_T(name) p->name = MSG_PARAM_UNDEFINED;
#define OCTSTR(name) p->name = NULL;
#define UUID(name) uuid_generate(p->name);
#define VOID(name) p->name = NULL;
@@ -115,6 +116,7 @@ Msg *msg_duplicate(Msg *msg)
new = msg_create(msg->type);

#define INTEGER(name) p->name = q->name;
+#define TIME_T(name) p->name = q->name;
#define OCTSTR(name) \
if (q->name == NULL) p->name = NULL; \
else p->name = octstr_duplicate(q->name);
@@ -135,6 +137,7 @@ void msg_destroy(Msg *msg)
return;

#define INTEGER(name) p->name = 0;
+#define TIME_T(name) p->name = 0;
#define OCTSTR(name) octstr_destroy(p->name);
#define UUID(name) uuid_clear(p->name);
#define VOID(name)
@@ -157,6 +160,8 @@ void msg_dump(Msg *msg, int level)
debug("gw.msg", 0, "%*s type: %s", level, "", type_as_str(msg));
#define INTEGER(name) \
debug("gw.msg", 0, "%*s %s.%s: %ld", level, "", t, #name, (long) p->name);
+#define TIME_T(name) \
+ debug("gw.msg", 0, "%*s %s.%s: %ld", level, "", t, #name, (long) p->name);
#define OCTSTR(name) \
debug("gw.msg", 0, "%*s %s.%s:", level, "", t, #name); \
octstr_dump(p->name, level + 1);
@@ -186,6 +191,7 @@ Octstr *msg_pack(Msg *msg)
append_integer(os, msg->type);

#define INTEGER(name) append_integer(os, p->name);
+#define TIME_T(name) append_integer(os, p->name);
#define OCTSTR(name) append_string(os, p->name);
#define UUID(name) append_uuid(os, p->name);
#define VOID(name)
@@ -221,6 +227,8 @@ Msg *msg_unpack_real(Octstr *os, const char *file, lon

#define INTEGER(name) \
if (parse_integer(&(p->name), os, &off) == -1) goto error;
+#define TIME_T(name) \
+ if (parse_time_t(&(p->name), os, &off) == -1) goto error;
#define OCTSTR(name) \
if (parse_string(&(p->name), os, &off) == -1) goto error;
#define UUID(name) \
@@ -248,17 +256,6 @@ error:
}


-/*
- * Wrapper function needed for function pointer forwarding to storage
- * subsystem. We can't pass the msg_unpack() pre-processor macro, so we
- * need to wrapp a function arround it.
- */
-inline Msg *msg_unpack_wrapper(Octstr *os)
-{
- return msg_unpack(os);
-}
-
-
/**********************************************************************
* Implementations of private functions.
*/
@@ -307,6 +304,21 @@ static int parse_integer(long *i, Octstr *packed, int
return 0;
}

+static int parse_time_t(time_t *i, Octstr *packed, int *off)
+{
+ unsigned char buf[sizeof(time_t)];
+
+ gw_assert(*off >= 0);
+ if (*off + sizeof(time_t) > octstr_len(packed)) {
+ error(0, "Packet too short while unpacking Msg.");
+ return -1;
+ }
+
+ octstr_get_many_chars((char *)buf, packed, *off, sizeof(time_t));
+ *i = decode_network_long(buf);
+ *off += sizeof(time_t);
+ return 0;
+}

static int parse_string(Octstr **os, Octstr *packed, int *off)
{
@@ -0,0 +1,27 @@
$OpenBSD$
--- gw/msg.h.orig Sat May 12 13:44:06 2012
+++ gw/msg.h Sun May 13 02:37:38 2012
@@ -80,6 +80,7 @@ typedef struct {
enum msg_type type;

#define INTEGER(name) long name;
+ #define TIME_T(name) time_t name;
#define OCTSTR(name) Octstr *name;
#define UUID(name) uuid_t name;
#define VOID(name) void *name;
@@ -181,6 +182,14 @@ Octstr *msg_pack(Msg *msg);
Msg *msg_unpack_real(Octstr *os, const char *file, long line, const char *func);
#define msg_unpack(os) \
gw_claim_area(msg_unpack_real((os), __FILE__, __LINE__, __func__))
-Msg *msg_unpack_wrapper(Octstr *os);
+/*
+ * Wrapper function needed for function pointer forwarding to storage
+ * subsystem. We can't pass the msg_unpack() pre-processor macro, so we
+ * need to wrapp a function arround it.
+*/
+static inline Msg *msg_unpack_wrapper(Octstr *os)
+{
+ return msg_unpack(os);
+}

#endif
@@ -0,0 +1,12 @@
$OpenBSD$
--- gw/shared.c.orig Sat May 12 15:12:15 2012
+++ gw/shared.c Sat May 12 15:12:21 2012
@@ -61,7 +61,7 @@
*/

#include <errno.h>
-#include <sys/unistd.h>
+#include <unistd.h>
#include <libxml/xmlversion.h>

#include "gwlib/gwlib.h"
@@ -0,0 +1,28 @@
$OpenBSD$
--- gw/smsbox.c.orig Sat May 19 00:18:49 2012
+++ gw/smsbox.c Sat May 19 00:20:15 2012
@@ -1294,13 +1294,13 @@ static int obey_request(Octstr **result, URLTranslatio
octstr_get_cstr(msg->sms.sender));

tm = gw_gmtime(msg->sms.time);
- sprintf(p, "%04d-%02d-%02d %02d:%02d:%02d",
+ snprintf(p, sizeof(p), "%04d-%02d-%02d %02d:%02d:%02d",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
http_header_add(request_headers, "X-Kannel-Time", p);

tm = gw_gmtime(time(NULL));
- sprintf(p, "%04d-%02d-%02d %02d:%02d:%02d",
+ snprintf(p, sizeof(p), "%04d-%02d-%02d %02d:%02d:%02d",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
http_header_add(request_headers, "Date", p); /* HTTP RFC 14.18 */
@@ -1447,7 +1447,7 @@ static int obey_request(Octstr **result, URLTranslatio
}

tm = gw_gmtime(time(NULL));
- sprintf(p, "%04d-%02d-%02d %02d:%02d:%02d",
+ snprintf(p, sizeof(p), "%04d-%02d-%02d %02d:%02d:%02d",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
http_header_add(request_headers, "Date", p); /* HTTP RFC 14.18 */
@@ -0,0 +1,54 @@
$OpenBSD$
--- gw/smsc/smsc_at.c.orig Sun May 13 03:54:38 2012
+++ gw/smsc/smsc_at.c Sun May 13 03:56:14 2012
@@ -930,7 +930,7 @@ static int at2_read_delete_message(PrivAT2data* privda
char cmd[20];
int message_count = 0;

- sprintf(cmd, "AT+CMGR=%d", message_number);
+ snprintf(cmd, sizeof(cmd), "AT+CMGR=%d", message_number);
/* read one message from memory */
at2_write_line(privdata, cmd);
if (at2_wait_modem_command(privdata, 0, 0, &message_count) != 0) {
@@ -946,7 +946,7 @@ static int at2_read_delete_message(PrivAT2data* privda
return 0;
}

- sprintf(cmd, "AT+CMGD=%d", message_number); /* delete the message we just read */
+ snprintf(cmd, sizeof(cmd), "AT+CMGD=%d", message_number); /* delete the message we just read */
/*
* 3 seconds (default timeout of send_modem_command()) is not enough with some
* modems if the message is large, so we'll give it 7 seconds
@@ -2242,7 +2242,7 @@ static void at2_send_one_message(PrivAT2data *privdata
sc[0] = '\0';

if (!privdata->modem->no_smsc)
- strcpy(sc, "00");
+ strlcpy(sc, "00", sizeof(sc));

if (msg_type(msg) == sms) {
Octstr *pdu;
@@ -2256,7 +2256,7 @@ static void at2_send_one_message(PrivAT2data *privdata
/*
* send the initial command and then wait for >
*/
- sprintf(command, "AT+CMGS=%ld", octstr_len(pdu) / 2);
+ snprintf(command, sizeof(command), "AT+CMGS=%ld", octstr_len(pdu) / 2);

ret = at2_send_modem_command(privdata, command, 5, 1);
debug("bb.smsc.at2", 0, "AT2[%s]: send command status: %d",
@@ -2276,12 +2276,12 @@ static void at2_send_one_message(PrivAT2data *privdata
*/

if (octstr_compare(privdata->modem->id, octstr_imm("nokiaphone")) != 0) {
- sprintf(command, "%s%s", sc, octstr_get_cstr(pdu));
+ snprintf(command, sizeof(command), "%s%s", sc, octstr_get_cstr(pdu));
at2_write(privdata, command);
at2_write_ctrlz(privdata);
} else {
/* include the CTRL-Z in the PDU string */
- sprintf(command, "%s%s%c", sc, octstr_get_cstr(pdu), 0x1A);
+ snprintf(command, sizeof(command), "%s%s%c", sc, octstr_get_cstr(pdu), 0x1A);

/* chop PDU into 18-byte-at-a-time pieces to prevent choking
* of certain GSM Phones (e.g. Nokia 6310, 6230 etc.) */
@@ -0,0 +1,12 @@
$OpenBSD$
--- gw/smsc/smsc.c.orig Sun May 13 11:06:28 2012
+++ gw/smsc/smsc.c Sun May 13 11:06:46 2012
@@ -115,7 +115,7 @@ SMSCenter *smscenter_construct(void)

smsc->mutex = mutex_create();

- sprintf(smsc->name, "Unknown SMSC");
+ snprintf(smsc->name, sizeof(smsc->name), "Unknown SMSC");
smsc->id = next_id++;

/* FAKE */
@@ -0,0 +1,48 @@
$OpenBSD$
--- gw/smsc/smsc_cimd2.c.orig Sun May 13 11:00:33 2012
+++ gw/smsc/smsc_cimd2.c Sun May 13 11:01:46 2012
@@ -1182,7 +1182,7 @@ static struct packet *packet_create(int operation, int
packet = gw_malloc(sizeof(*packet));
packet->operation = operation;
packet->seq = seq;
- sprintf(minpacket, STX_str "%02d:%03d" TAB_str ETX_str, operation, seq);
+ snprintf(minpacket, sizeof(minpacket), STX_str "%02d:%03d" TAB_str ETX_str, operation, seq);
packet->data = octstr_create(minpacket);

return packet;
@@ -1217,7 +1217,7 @@ static void packet_add_parm(struct packet *packet, int
* The new parameter will come with a new starting TAB. */
position = octstr_len(packet->data) - 2;

- sprintf(parmh, TAB_str "%03d:", parmno);
+ snprintf(parmh, sizeof(parmh), TAB_str "%03d:", parmno);
octstr_insert_data(packet->data, position, parmh, strlen(parmh));
octstr_insert(packet->data, value, position + strlen(parmh));
if (copied)
@@ -1266,7 +1266,7 @@ static void packet_add_int_parm(struct packet *packet,

gw_assert(parm_in_range(parmno, value));

- sprintf(buf, "%ld", value);
+ snprintf(buf, sizeof(buf), "%ld", value);
valuestr = octstr_create(buf);
packet_add_parm(packet, P_INT, parmno, valuestr, conn);
octstr_destroy(valuestr);
@@ -1296,7 +1296,7 @@ static void packet_set_checksum(struct packet *packet)
checksum &= 0xff;
}

- sprintf(buf, "%02X", checksum);
+ snprintf(buf, sizeof(buf), "%02X", checksum);
octstr_insert_data(data, len - 1, buf, 2);
}

@@ -1308,7 +1308,7 @@ static void packet_set_sequence(struct packet *packet,
gw_assert(seq >= 0);
gw_assert(seq < 256);

- sprintf(buf, "%03d", seq);
+ snprintf(buf, sizeof(buf), "%03d", seq);

/* Start at 4 to skip the <STX> ZZ: part of the header. */
octstr_set_char(packet->data, 4, buf[0]);
@@ -0,0 +1,66 @@
$OpenBSD$
--- gw/smsc/smsc_cimd.c.orig Sun May 13 11:07:22 2012
+++ gw/smsc/smsc_cimd.c Sun May 13 11:13:03 2012
@@ -134,7 +134,7 @@ static int cimd_open_connection(SMSCenter *smsc)
smscenter_remove_from_buffer(smsc, smsc->buflen);

/* send login string */
- sprintf(tmpbuff, "%c%s%c%s%c%s%c%s%c%c",
+ snprintf(tmpbuff, sizeof(tmpbuff), "%c%s%c%s%c%s%c%s%c%c",
0x02,
"01", 0x09,
smsc->cimd_username, 0x09,
@@ -191,7 +191,7 @@ SMSCenter *cimd_open(char *hostname, int port, char *u
if (ret < 0)
goto error;

- sprintf(smsc->name, "CIMD:%s:%d:%s", smsc->cimd_hostname,
+ snprintf(smsc->name, sizeof(smsc->name), "CIMD:%s:%d:%s", smsc->cimd_hostname,
smsc->cimd_port, smsc->cimd_username);
return smsc;

@@ -238,7 +238,7 @@ int cimd_close(SMSCenter *smsc)
}
cbuff = gw_malloc(2 * 1024);

- sprintf(cbuff, "%c%s%c%s%c%c", 0x02, "02", 0x09, "11", 0x03, 0x0A);
+ snprintf(cbuff, sizeof(cbuff), "%c%s%c%s%c%c", 0x02, "02", 0x09, "11", 0x03, 0x0A);

sum = write_to_socket(smsc->socket, cbuff);
if (sum < 0) goto error;
@@ -281,7 +281,7 @@ int cimd_pending_smsmessage(SMSCenter *smsc)
tmpbuff = gw_malloc(10 * 1024);
memset(tmpbuff, 0, 10*1024);

- sprintf(tmpbuff, "%c%s%c%s%c%c",
+ snprintf(tmpbuff, sizeof(tmpbuff), "%c%s%c%s%c%c",
0x02, /* stx */
"05", 0x09, /* request for message, tab */
"11", /* dummy chksum */
@@ -403,7 +403,7 @@ int cimd_submit_msg(SMSCenter *smsc, Msg *msg)
parse_iso88591_to_cimd(msgtext, tmptext, 10*1024, smsc->alt_charset);

/* If messages has UDHs, add the magic number 31 to the right spot */
- sprintf(tmpbuff, "%c%s%c%s%c%s%c%s%c%s%c%s%c%s%c%c",
+ snprintf(tmpbuff, sizeof(tmpbuff), "%c%s%c%s%c%s%c%s%c%s%c%s%c%s%c%c",
0x02,
"03", 0x09,
octstr_get_cstr(msg->sms.receiver), 0x09,
@@ -604,7 +604,7 @@ static int connect_tcpip(SMSCenter *smsc)
smscenter_remove_from_buffer(smsc, smsc->buflen);

/* send login string */
- sprintf(tmpbuff, "%c%s%c%s%c%s%c%s%c%c",
+ snprintf(tmpbuff, sizeof(tmpbuff), "%c%s%c%s%c%s%c%s%c%c",
0x02,
"01", 0x09,
smsc->cimd_username, 0x09,
@@ -650,7 +650,7 @@ static int send_acknowledge(SMSCenter *smsc)

memset(tmpbuff, 0, sizeof(tmpbuff));

- sprintf(tmpbuff, "\2\6\t11\3\n");
+ snprintf(tmpbuff, sizeof(tmpbuff), "\2\6\t11\3\n");

tmpint = write_to_socket(smsc->socket, tmpbuff);
if (tmpint == -1) {
@@ -0,0 +1,21 @@
$OpenBSD$
--- gw/smsc/smsc_emi.c.orig Sun May 13 11:05:50 2012
+++ gw/smsc/smsc_emi.c Sun May 13 11:06:14 2012
@@ -539,7 +539,7 @@ static struct emimsg *msg_to_emimsg(Msg *msg, int trn,

if (msg->sms.validity >= 0) {
tm = gw_localtime(time(NULL) + msg->sms.validity * 60);
- sprintf(p, "%02d%02d%02d%02d%02d",
+ snprintf(p, sizeof(p), "%02d%02d%02d%02d%02d",
tm.tm_mday, tm.tm_mon + 1, tm.tm_year % 100,
tm.tm_hour, tm.tm_min);
str = octstr_create(p);
@@ -549,7 +549,7 @@ static struct emimsg *msg_to_emimsg(Msg *msg, int trn,
str = octstr_create("1");
emimsg->fields[E50_DD] = str;
tm = gw_localtime(time(NULL) + msg->sms.deferred * 60);
- sprintf(p, "%02d%02d%02d%02d%02d",
+ snprintf(p, sizeof(p), "%02d%02d%02d%02d%02d",
tm.tm_mday, tm.tm_mon + 1, tm.tm_year % 100,
tm.tm_hour, tm.tm_min);
str = octstr_create(p);
@@ -0,0 +1,220 @@
$OpenBSD$
--- gw/smsc/smsc_emi_x25.c.orig Sun May 13 03:43:14 2012
+++ gw/smsc/smsc_emi_x25.c Sun May 13 03:52:14 2012
@@ -139,7 +139,7 @@ static int emi_open_connection(SMSCenter *smsc)
{
char tmpbuff[1024];

- sprintf(tmpbuff, "/dev/%s", smsc->emi_serialdevice);
+ snprintf(tmpbuff, sizeof(tmpbuff), "/dev/%s", smsc->emi_serialdevice);
smsc->emi_fd = at_dial(tmpbuff, smsc->emi_phonenum, "ATD", 30);

if (smsc->emi_fd <= 0)
@@ -170,7 +170,7 @@ SMSCenter *emi_open(char *phonenum, char *serialdevice
if (emi_open_connection(smsc) < 0)
goto error;

- sprintf(smsc->name, "EMI:%s:%s", smsc->emi_phonenum,
+ snprintf(smsc->name, sizeof(smsc->name), "EMI:%s:%s", smsc->emi_phonenum,
smsc->emi_username);
return smsc;

@@ -209,7 +209,7 @@ static int emi_fill_ucp60_login(char *buf, char *OAdC,
return -1;
}

- sprintf(buf, "%s/%c/%c/%c/%s//%s/////",
+ snprintf(buf, sizeof(buf), "%s/%c/%c/%c/%s//%s/////",
OAdC, /* OAdC: Address code originator */
'6', /* OTON: 6 = Abbreviated number (short number alias) */
'5', /* ONPI: 5 = Private (TCP/IP address/abbreviated number address) */
@@ -246,15 +246,15 @@ static int emi_open_session(SMSCenter *smsc)
length += 2; /* footer (fixed) */
length += 2; /* slashes between header, body, footer */

- sprintf(message_header, "%02i/%05i/O/60",
+ snprintf(message_header, sizeof(message_header), "%02i/%05i/O/60",
(smsc->emi_current_msg_number++ % 100), length);

/* FOOTER */

- sprintf(my_buffer, "%s/%s/", message_header, message_body);
+ snprintf(my_buffer, sizeof(my_buffer), "%s/%s/", message_header, message_body);
generate_checksum((unsigned char *)my_buffer, (unsigned char *)message_footer);

- sprintf(message_whole, "\x02%s/%s/%s\x03", message_header,
+ snprintf(message_whole, sizeof(message_whole), "\x02%s/%s/%s\x03", message_header,
message_body, message_footer);

debug("bb.sms.emi", 0, "final UCP60 msg: <%s>", message_whole);
@@ -530,7 +530,7 @@ static int at_dial(char *device, char *phonenum, char

/* Send AT dial request. */
howmanyread = 0;
- sprintf(tmpbuff, "%s%s\r\n", at_prefix, phonenum);
+ snprintf(tmpbuff, sizeof(tmpbuff), "%s%s\r\n", at_prefix, phonenum);
ret = write(fd, tmpbuff, strlen(tmpbuff)); /* errors... -mg */
memset(&tmpbuff, 0, sizeof(tmpbuff));

@@ -837,9 +837,9 @@ static int memorybuffer_has_rawmessage(SMSCenter *smsc
strncpy(tmpbuff, stx, etx - stx + 1);
tmpbuff[etx - stx + 1] = '\0';
if (auth)
- sprintf(tmpbuff2, "/%c/%02i/", auth, type);
+ snprintf(tmpbuff2, sizeof(tmpbuff2), "/%c/%02i/", auth, type);
else
- sprintf(tmpbuff2, "/%02i/", type);
+ snprintf(tmpbuff2, sizeof(tmpbuff2), "/%02i/", type);

if (strstr(tmpbuff, tmpbuff2) != NULL) {
debug("bb.sms.emi", 0, "found message <%c/%02i>...msg <%s>", auth, type, tmpbuff);
@@ -921,19 +921,19 @@ static int parse_rawmessage_to_msg(SMSCenter *smsc, Ms
break;

*rightslash = '\0';
- strcpy(emivars[tmpint], leftslash + 1);
+ strlcpy(emivars[tmpint], leftslash + 1, sizeof(emivars[tmpint]));
leftslash = rightslash;
}

if (strcmp(emivars[3], "01") == 0) {
if (strcmp(emivars[7], "2") == 0) {
- strcpy(isotext, emivars[8]);
+ strlcpy(isotext, emivars[8], sizeof(isotext));
} else if (strcmp(emivars[7], "3") == 0) {
parse_emi_to_iso88591(emivars[8], isotext, sizeof(isotext),
smsc->alt_charset);
} else {
error(0, "Unknown 01-type EMI SMS (%s)", emivars[7]);
- strcpy(isotext, "");
+ strlcpy(isotext, "", sizeof(isotext));
}
} else if (strcmp(emivars[3], "51") == 0) {
parse_emi_to_iso88591(emivars[24], isotext, sizeof(isotext),
@@ -943,7 +943,7 @@ static int parse_rawmessage_to_msg(SMSCenter *smsc, Ms
smsc->alt_charset);
} else {
error(0, "HEY WE SHOULD NOT BE HERE!! Type = %s", emivars[3]);
- strcpy(isotext, "");
+ strlcpy(isotext, "", sizeof(isotext));
}

*msg = msg_create(sms);
@@ -998,29 +998,29 @@ static int acknowledge_from_rawmessage(SMSCenter *smsc
break;

*rightslash = '\0';
- strcpy(emivars[tmpint], leftslash + 1);
+ strlcpy(emivars[tmpint], leftslash + 1, sizeof(emivars[tmpint]));
leftslash = rightslash;
}

/* BODY */
- sprintf(isotext, "A//%s:%s", emivars[4], emivars[18]);
- sprintf(isotext, "A//%s:", emivars[5]);
+ snprintf(isotext, sizeof(isotext), "A//%s:%s", emivars[4], emivars[18]);
+ snprintf(isotext, sizeof(isotext), "A//%s:", emivars[5]);
is_backup = 0;

/* HEADER */

debug("bb.sms.emi", 0, "acknowledge: type = '%s'", emivars[3]);

- sprintf(emitext, "%s/%05i/%s/%s", emivars[0], (int) strlen(isotext) + 17,
+ snprintf(emitext, sizeof(emitext), "%s/%05i/%s/%s", emivars[0], (int) strlen(isotext) + 17,
"R", emivars[3]);

smsc->emi_current_msg_number = atoi(emivars[0]) + 1;

/* FOOTER */
- sprintf(timestamp, "%s/%s/", emitext, isotext);
+ snprintf(timestamp, sizeof(timestamp), "%s/%s/", emitext, isotext);
generate_checksum((unsigned char *)timestamp, (unsigned char *)receiver);

- sprintf(sender, "%c%s/%s/%s%c", 0x02, emitext, isotext, receiver, 0x03);
+ snprintf(sender, sizeof(sender), "%c%s/%s/%s%c", 0x02, emitext, isotext, receiver, 0x03);
put_data(smsc, sender, strlen(sender), is_backup);

return msgnbr;
@@ -1082,24 +1082,24 @@ static int parse_msg_to_rawmessage(SMSCenter *smsc, Ms
octstr_len(msg->sms.msgdata),
smsc->alt_charset);

- strcpy(snumbits, "");
+ strlcpy(snumbits, "", sizeof(snumbits));
mt = '3';
- strcpy(mcl, "");
+ strlcpy(mcl, "", sizeof(mcl));
} else {
octstr_get_many_chars(msgtext, msg->sms.msgdata, 0, octstr_len(msg->sms.msgdata));

parse_binary_to_emi(msgtext, my_buffer2, octstr_len(msg->sms.msgdata));

- sprintf(snumbits, "%04ld", octstr_len(msg->sms.msgdata)*8);
+ snprintf(snumbits, sizeof(snumbits), "%04ld", octstr_len(msg->sms.msgdata)*8);
mt = '4';
- strcpy(mcl, "1");
+ strlcpy(mcl, "1", sizeof(mcl));
}

/* XXX Where is DCS ? Is it in XSER like in emi2 ?
* Please someone encode it with fields_to_dcs
*/

- sprintf(message_body,
+ snprintf(message_body, sizeof(message_body),
"%s/%s/%s/%s/%s//%s////////////%c/%s/%s////%s//////%s//",
octstr_get_cstr(msg->sms.receiver),
msg->sms.sender ? octstr_get_cstr(msg->sms.sender) : "",
@@ -1120,20 +1120,20 @@ static int parse_msg_to_rawmessage(SMSCenter *smsc, Ms
length += 2; /* footer (fixed) */
length += 2; /* slashes between header, body, footer */

- sprintf(message_header, "%02i/%05i/%s/%s", (smsc->emi_current_msg_number++ % 100), length, "O", "51");
+ snprintf(message_header, sizeof(message_header), "%02i/%05i/%s/%s", (smsc->emi_current_msg_number++ % 100), length, "O", "51");

/* FOOTER */

- sprintf(my_buffer, "%s/%s/", message_header, message_body);
+ snprintf(my_buffer, sizeof(my_buffer), "%s/%s/", message_header, message_body);
generate_checksum((unsigned char *)my_buffer, (unsigned char *)message_footer);

- sprintf(message_whole, "%c%s/%s/%s%c", 0x02, message_header, message_body, message_footer, 0x03);
+ snprintf(message_whole, sizeof(message_whole), "%c%s/%s/%s%c", 0x02, message_header, message_body, message_footer, 0x03);

strncpy(rawmessage, message_whole, rawmessage_length);

if (smsc->type == SMSC_TYPE_EMI_X25) {
/* IC3S braindead EMI stack chokes on this... must fix it at the next time... */
- strcat(rawmessage, "\r");
+ strlcat(rawmessage, "\r", sizeof(rawmessage));
}
debug("bb.sms.emi", 0, "emi %d message %s",
smsc->emi_current_msg_number, rawmessage);
@@ -1181,7 +1181,7 @@ static int parse_iso88591_to_emi(char *from, char *to,

for (ptr = from; length > 0; ptr++, length--) {
tmpchar = char_iso_to_sms(*ptr, alt_charset);
- sprintf(buf, "%02X", tmpchar);
+ snprintf(buf, sizeof(buf), "%02X", tmpchar);
strncat(to, buf, 2);
}
return 0;
@@ -1201,7 +1201,7 @@ static int parse_binary_to_emi(char *from, char *to, i
*to = '\0';

for (ptr = from; length > 0; ptr++, length--) {
- sprintf(buf, "%02X", (unsigned char)*ptr);
+ snprintf(buf, sizeof(buf), "%02X", (unsigned char)*ptr);
strncat(to, buf, 2);
}

@@ -1225,7 +1225,7 @@ static void generate_checksum(const unsigned char *buf
j -= 256;
}

- sprintf((char *)out, "%02X", j);
+ snprintf((char *)out, sizeof((char *)out), "%02X", j);
}


@@ -0,0 +1,48 @@
$OpenBSD$
--- gw/smsc/smsc_ois.c.orig Sun May 13 11:04:02 2012
+++ gw/smsc/smsc_ois.c Sun May 13 11:05:16 2012
@@ -244,7 +244,7 @@ SMSCenter *ois_open(int receiveport, const char *hostn
if (ret < 0) {
goto error;
}
- sprintf(smsc->name, "OIS:TCP/X.25-Translator:localhost:%d:TCP:%.512s:%d",
+ snprintf(smsc->name, sizeof(smsc->name), "OIS:TCP/X.25-Translator:localhost:%d:TCP:%.512s:%d",
smsc->receive_port, smsc->hostname, smsc->port);

return smsc;
@@ -828,7 +828,7 @@ static int ois_submit_sm_invoke(SMSCenter *smsc, const

/* first part */

- sprintf(buffer, "%c%c%04d%.121s%c",
+ snprintf(buffer, sizeof(buffer), "%c%c%04d%.121s%c",
'S', /* submit sm invoke */
(char)(0x50|count), /* ia5 encoding, first part */
ois_counter,
@@ -843,7 +843,7 @@ static int ois_submit_sm_invoke(SMSCenter *smsc, const
/* additional parts */

for (i = 1; i <= count; ++i) {
- sprintf(buffer, "%c%c%04d%.121s%c",
+ snprintf(buffer, sizeof(buffer), "%c%c%04d%.121s%c",
'S', /* submit sm invoke */
(char)(0x60|(count-i)), /* ia5, additional part */
ois_counter,
@@ -1171,7 +1171,7 @@ static int ois_check_deliver_sm_invoke(const char *str
{
/* check the additional header */

- sprintf(buffer, "%c%c%c%.4s",
+ snprintf(buffer, sizeof(buffer), "%c%c%c%.4s",
EOL,
'M', /* deliver sm invoke */
(char)(0x60|count), /* ia5 encoding, additional part */
@@ -1355,7 +1355,7 @@ static int ois_deliver_sm_result(SMSCenter *smsc, int

/* first and only part */

- sprintf(buffer, "%c%c%.4s%.121s%c",
+ snprintf(buffer, sizeof(buffer), "%c%c%.4s%.121s%c",
'm', /* deliver sm result */
(char)(0x50), /* ia5 encoding, the only part */
&str[2],
@@ -0,0 +1,32 @@
$OpenBSD$
--- gw/smsc/smsc_sema.c.orig Sun May 13 11:02:14 2012
+++ gw/smsc/smsc_sema.c Sun May 13 11:03:33 2012
@@ -120,7 +120,7 @@ SMSCenter * sema_open(char* smscnua, char* homenua,
if(smsc == NULL)
goto error;

- sprintf(smsc->name, "SEMA:X28:");
+ snprintf(smsc->name, sizeof(smsc->name), "SEMA:X28:");

smsc->type = SMSC_TYPE_SEMA_X28;
smsc->sema_smscnua = gw_strdup(smscnua);
@@ -570,7 +570,7 @@ static int X28_close_send_link(int padfd)
time_t tstart;
time(&tstart);

- sprintf(discnntbuff,"%cCLR\r",0x10);
+ snprintf(discnntbuff,sizeof(discnntbuff),"%cCLR\r",0x10);
memset(readbuff,0,sizeof(readbuff));

/* what ever is the close return, data mode is unreliable now*/
@@ -654,8 +654,8 @@ static int X28_open_send_link(int padfd, char *nua) {
memset(writebuff,0,sizeof(writebuff));
memset(readbuff,0,sizeof(readbuff));
writeall = readall = 0;
- sprintf(writebuff, "%s\r", nua);
- sprintf(smscbuff, "%s COM",nua);
+ snprintf(writebuff, sizeof(writebuff), "%s\r", nua);
+ snprintf(smscbuff, sizeof(smscbuff), "%s COM",nua);

while((size_t) writeall < strlen(writebuff)){
writeonce = -1;
@@ -0,0 +1,12 @@
$OpenBSD$
--- gw/smsc/smsc_smpp.c.orig Sun May 13 10:52:22 2012
+++ gw/smsc/smsc_smpp.c Sun May 13 10:53:14 2012
@@ -977,7 +977,7 @@ static SMPP_PDU *msg_to_pdu(SMPP *smpp, Msg *msg)
}


-static int send_enquire_link(SMPP *smpp, Connection *conn, long *last_sent)
+static int send_enquire_link(SMPP *smpp, Connection *conn, time_t *last_sent)
{
SMPP_PDU *pdu;
Octstr *os;
@@ -0,0 +1,41 @@
$OpenBSD$
--- gw/smsc/smsc_soap.c.orig Sat May 12 13:44:05 2012
+++ gw/smsc/smsc_soap.c Sun May 13 03:54:19 2012
@@ -1170,7 +1170,7 @@ static void soap_read_response(SMSCConn *conn)
msgID = msg->sms.id;
*/

- sprintf(tmpid,"%lld",msgID);
+ snprintf(tmpid,sizeof(tmpid),"%lld",msgID);
debug("bb.soap.read_response",0,"SOAP[%s]: ACK - id: %lld", octstr_get_cstr(privdata->name), msgID);

dlr_add(conn->id, octstr_imm(tmpid), msg);
@@ -2049,12 +2049,17 @@ static Octstr* soap_convert_token(Msg* msg, Octstr* na

#define INTEGER(fieldname) \
if (!octstr_str_compare(name, #fieldname)) { \
- sprintf(buf,"%ld", p->fieldname); \
+ snprintf(buf,sizeof(buf),"%ld", p->fieldname); \
return octstr_create(buf); \
}
+#define TIME_T(fieldname) \
+ if (!octstr_str_compare(name, #fieldname)) { \
+ snprintf(buf,sizeof(buf),"%d", p->fieldname); \
+ return octstr_create(buf); \
+ }
#define INT64(fieldname) \
if (!octstr_str_compare(name, #fieldname)) { \
- sprintf(buf,"%lld", p->fieldname); \
+ snprintf(buf,sizeof(buf),"%lld", p->fieldname); \
return octstr_create(buf); \
}
#define OCTSTR(fieldname) \
@@ -2374,7 +2379,7 @@ int soap_map_xml_data(xmlNodePtr xml, List* maps)
octstr_strip_blanks(temp);
if (!octstr_str_compare(map->sscan_type,"%s")) {
/* special processing of %s - this means the whole string, while sscanf stops at spaces */
- strcpy(map->store,octstr_get_cstr(temp));
+ strlcpy(map->store,octstr_get_cstr(temp),sizeof(map->store));

++args;
} else {
@@ -0,0 +1,12 @@
$OpenBSD$
--- gw/wap-appl.c.orig Sun May 13 11:15:24 2012
+++ gw/wap-appl.c Sun May 13 11:15:52 2012
@@ -549,7 +549,7 @@ static void add_session_id(List *headers, long session
{
if (session_id != -1) {
char buf[40];
- sprintf(buf, "%ld", session_id);
+ snprintf(buf, sizeof(buf), "%ld", session_id);
http_header_add(headers, "X-WAP-Session-ID", buf);
}
}
@@ -0,0 +1,32 @@
$OpenBSD$
--- gw/wap_ppg_push_machine.def.orig Sat May 12 13:44:06 2012
+++ gw/wap_ppg_push_machine.def Sat May 19 01:46:22 2012
@@ -92,8 +92,8 @@
* By Aarno Syv�nen for Wapit Ltd, for Wiral Ltd and for Global Networks Inc
*/

-#if !defined(MACHINE)
- #error "Macro MACHINE is missing"
+#if !defined(MACHINEWSP)
+ #error "Macro MACHINEWSP is missing"
#elif !defined(INTEGER)
#error "Macro INTEGER is missing"
#elif !defined(OCTSTR)
@@ -108,7 +108,7 @@
#error "Macro HTTPHEADER is missing"
#endif

-MACHINE(OCTSTR(pi_push_id) /* this id is selected by PI and SHOULD
+MACHINEWSP(OCTSTR(pi_push_id) /* this id is selected by PI and SHOULD
include data separating different PIs */
INTEGER(push_id) /* this id is generated by Kannel */
OPTIONAL_OCTSTR(sender_address) /* PPG address known by PI */
@@ -139,7 +139,7 @@ MACHINE(OCTSTR(pi_push_id) /* this id is selecte
OPTIONAL_OCTSTR(service_name)
)

-#undef MACHINE
+#undef MACHINEWSP
#undef INTEGER
#undef OCTSTR
#undef OPTIONAL_OCTSTR
@@ -0,0 +1,32 @@
$OpenBSD$
--- gw/wap_ppg_session_machine.def.orig Sat May 12 13:44:06 2012
+++ gw/wap_ppg_session_machine.def Sat May 19 01:46:22 2012
@@ -61,8 +61,8 @@
* By Aarno Syv�nen for Wapit Ltd
*/

-#if !defined(MACHINE)
- #error "Macro MACHINE is missing"
+#if !defined(MACHINEWSP)
+ #error "Macro MACHINEWSP is missing"
#elif !defined(ADDRTUPLE)
#error "Macro ADDRTUPLE is missing"
#elif !defined(INTEGER)
@@ -73,7 +73,7 @@
#error "Macro CAPABILITIES not defined"
#endif

-MACHINE(
+MACHINEWSP(
OCTSTR(pi_client_address) /* client address in PAP format */
OCTSTR(sender_address) /* PPG's address */
ADDRTUPLE(addr_tuple) /* addresses using gw format */
@@ -86,7 +86,7 @@ MACHINE(
delivery method attribute */
)

-#undef MACHINE
+#undef MACHINEWSP
#undef ADDRTUPLE
#undef INTEGER
#undef PUSHMACHINES
@@ -0,0 +1,39 @@
$OpenBSD$
--- gw/wap_push_ppg.c.orig Sat May 12 16:56:22 2012
+++ gw/wap_push_ppg.c Sat May 12 16:58:31 2012
@@ -1320,7 +1320,7 @@ static PPGSessionMachine *session_machine_create(WAPAd
#define ADDRTUPLE(name) m->name = NULL;
#define PUSHMACHINES(name) m->name = gwlist_create();
#define CAPABILITIES(name) m->name = NULL;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wap_ppg_session_machine.def"

m->pi_client_address = octstr_duplicate(e->u.Push_Message.address_value);
@@ -1352,7 +1352,7 @@ static void session_machine_destroy(void *p)
#define INTEGER(name) sm->name = 0;
#define PUSHMACHINES(name) push_machines_list_destroy(sm->name);
#define CAPABILITIES(name) wsp_cap_destroy_list(sm->name);
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wap_ppg_session_machine.def"
gw_free(sm);
}
@@ -1373,7 +1373,7 @@ static PPGPushMachine *push_machine_create(WAPEvent *e
#define ADDRTUPLE(name) m->name = NULL;
#define CAPABILITIES m->name = NULL;
#define HTTPHEADER(name) m->name = NULL;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wap_ppg_push_machine.def"

m->addr_tuple = wap_addr_tuple_duplicate(tuple);
@@ -1433,7 +1433,7 @@ static void push_machine_destroy(void *p)
#define ADDRTUPLE(name) wap_addr_tuple_destroy(pm->name);
#define CAPABILITIES(name) wap_cap_destroy_list(pm->name);
#define HTTPHEADER(name) http_destroy_headers(pm->name);
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wap_ppg_push_machine.def"

gw_free(p);
@@ -0,0 +1,21 @@
$OpenBSD$
--- gw/wap_push_ppg.h.orig Sat May 12 16:52:10 2012
+++ gw/wap_push_ppg.h Sat May 12 16:52:47 2012
@@ -178,7 +178,7 @@ struct PPGSessionMachine {
#define INTEGER(name) long name;
#define PUSHMACHINES(name) List *name;
#define CAPABILITIES(name) List *name;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wap_ppg_session_machine.def"
};

@@ -189,7 +189,7 @@ struct PPGPushMachine {
#define ADDRTUPLE(name) WAPAddrTuple *name;
#define HTTPHEADER(name) List *name;
#define CAPABILITIES(name) List *name;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wap_ppg_push_machine.def"
};

@@ -0,0 +1,34 @@
$OpenBSD$
--- gwlib/accesslog.c.orig Sat May 12 13:43:54 2012
+++ gwlib/accesslog.c Mon May 14 00:24:52 2012
@@ -151,7 +151,7 @@ void alog_open(char *fname, int use_localtm, int use_m
return;
}
file = f;
- strcpy(filename, fname);
+ strlcpy(filename, fname, sizeof(filename));
info(0, "Started access logfile `%s'.", filename);
if (markers)
alog("Log begins");
@@ -186,7 +186,7 @@ static void format(char *buf, const char *fmt)
else
tm = gw_gmtime(t);

- sprintf(p, "%04d-%02d-%02d %02d:%02d:%02d ",
+ snprintf(p, sizeof(prefix), "%04d-%02d-%02d %02d:%02d:%02d ",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
} else {
@@ -194,10 +194,10 @@ static void format(char *buf, const char *fmt)
}

if (strlen(prefix) + strlen(fmt) > FORMAT_SIZE / 2) {
- sprintf(buf, "%s <OUTPUT message too long>\n", prefix);
+ snprintf(buf, sizeof(prefix), "%s <OUTPUT message too long>\n", prefix);
return;
}
- sprintf(buf, "%s%s\n", prefix, fmt);
+ snprintf(buf, sizeof(prefix), "%s%s\n", prefix, fmt);
}


@@ -0,0 +1,12 @@
$OpenBSD$
--- gwlib/date.c.orig Sun May 13 11:18:03 2012
+++ gwlib/date.c Sun May 13 11:18:23 2012
@@ -108,7 +108,7 @@ Octstr *date_format_http(unsigned long unixtime)
return NULL;
}

- sprintf(buffer, "%s, %02d %s %04d %02d:%02d:%02d GMT",
+ snprintf(buffer, sizeof(buffer), "%s, %02d %s %04d %02d:%02d:%02d GMT",
wkday[tm.tm_wday], tm.tm_mday, monthname[tm.tm_mon],
tm.tm_year + 1900, tm.tm_hour, tm.tm_min, tm.tm_sec);

@@ -0,0 +1,16 @@
$OpenBSD$
--- gwlib/gw_uuid.c.orig Sat May 19 01:55:36 2012
+++ gwlib/gw_uuid.c Sat May 19 01:56:19 2012
@@ -561,9 +561,10 @@ void uuid_unpack(const uuid_t in, struct uuid *uu)
void uuid_unparse(const uuid_t uu, char *out)
{
struct uuid uuid;
-
+ char buf[UUID_STR_LEN + 1];
+
uuid_unpack(uu, &uuid);
- sprintf(out,
+ snprintf(out, sizeof(buf),
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
uuid.time_low, uuid.time_mid, uuid.time_hi_and_version,
uuid.clock_seq >> 8, uuid.clock_seq & 0xFF,
@@ -0,0 +1,12 @@
$OpenBSD$
--- gwlib/gwmem-check.c.orig Sat May 19 01:04:29 2012
+++ gwlib/gwmem-check.c Sat May 19 01:06:10 2012
@@ -334,7 +334,7 @@ static void dump_area(struct area *area)
p = area->area;
buf[0] = '\0';
for (i = 0; i < area->area_size && i < MAX_DUMP; ++i)
- sprintf(strchr(buf, '\0'), "%02x ", p[i]);
+ snprintf(strchr(buf, '\0'), sizeof(buf), "%02x ", p[i]);

debug("gwlib.gwmem", 0, "Contents of area (first %d bytes):", MAX_DUMP);
debug("gwlib.gwmem", 0, " %s", buf);
@@ -0,0 +1,62 @@
$OpenBSD$
--- gwlib/log.c.orig Sat May 12 13:43:54 2012
+++ gwlib/log.c Mon May 14 00:26:04 2012
@@ -379,7 +379,7 @@ int log_open(char *filename, int level, enum excl_stat
logfiles[num_logfiles].file = f;
logfiles[num_logfiles].minimum_output_level = level;
logfiles[num_logfiles].exclusive = excl;
- strcpy(logfiles[num_logfiles].filename, filename);
+ strlcpy(logfiles[num_logfiles].filename, filename, sizeof(logfiles[num_logfiles].filename));
++num_logfiles;
i = num_logfiles - 1;
gw_rwlock_unlock(&rwlock);
@@ -417,7 +417,7 @@ static void format(char *buf, int level, const char *p
#else
tm = gw_gmtime(t);
#endif
- sprintf(p, "%04d-%02d-%02d %02d:%02d:%02d ",
+ snprintf(p, sizeof(prefix), "%04d-%02d-%02d %02d:%02d:%02d ",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);

@@ -425,32 +425,32 @@ static void format(char *buf, int level, const char *p

/* print PID and thread ID */
gwthread_self_ids(&tid, &pid);
- sprintf(p, "[%ld] [%ld] ", pid, tid);
+ snprintf(p, sizeof(prefix), "[%ld] [%ld] ", pid, tid);
} else {
/* thread ID only */
tid = gwthread_self();
- sprintf(p, "[%ld] ", tid);
+ snprintf(p, sizeof(prefix), "[%ld] ", tid);
}

p = strchr(p, '\0');
if (level < 0 || level >= tab_size)
- sprintf(p, "UNKNOWN: ");
+ snprintf(p, sizeof(prefix), "UNKNOWN: ");
else
- sprintf(p, "%s", tab[level]);
+ snprintf(p, sizeof(prefix), "%s", tab[level]);

p = strchr(p, '\0');
if (place != NULL && *place != '\0')
- sprintf(p, "%s: ", place);
+ snprintf(p, sizeof(prefix), "%s: ", place);

if (strlen(prefix) + strlen(fmt) > FORMAT_SIZE / 2) {
- sprintf(buf, "%s <OUTPUT message too long>\n", prefix);
+ snprintf(buf, sizeof(prefix), "%s <OUTPUT message too long>\n", prefix);
return;
}

if (e == 0)
- sprintf(buf, "%s%s\n", prefix, fmt);
+ snprintf(buf, sizeof(prefix), "%s%s\n", prefix, fmt);
else
- sprintf(buf, "%s%s\n%sSystem error %d: %s\n",
+ snprintf(buf, sizeof(prefix), "%s%s\n%sSystem error %d: %s\n",
prefix, fmt, prefix, e, strerror(e));
}

@@ -0,0 +1,12 @@
$OpenBSD$
--- gwlib/md5.c.orig Sun May 13 11:17:16 2012
+++ gwlib/md5.c Sun May 13 11:17:33 2012
@@ -104,7 +104,7 @@ static void md5_digest(char *md5str, unsigned char *di
int i;

for (i = 0; i < 16; i++) {
- sprintf(md5str, "%02x", digest[i]);
+ snprintf(md5str, sizeof(md5str), "%02x", digest[i]);
md5str += 2;
}

@@ -0,0 +1,83 @@
$OpenBSD$
--- gwlib/octstr.c.orig Fri May 18 23:09:55 2012
+++ gwlib/octstr.c Fri May 18 23:17:40 2012
@@ -81,7 +81,7 @@
*/
#if (defined(__linux__) && (defined(__powerpc__) || defined(__s390__) || defined(__x86_64))) || \
(defined(__FreeBSD__) && defined(__amd64__)) || \
- (defined(DARWIN) && defined(__x86_64__))
+ (defined(DARWIN) && defined(__x86_64__)) || (defined(OpenBSD) && defined(__amd64__))
#define VARGS(x) (x)
#define VALPARM(y) va_list y
#define VALST(z) (z)
@@ -1921,7 +1921,7 @@ void octstr_append_decimal(Octstr *ostr, long value)
{
char tmp[128];

- sprintf(tmp, "%ld", value);
+ snprintf(tmp, sizeof(tmp), "%ld", value);
octstr_append_cstr(ostr, tmp);
}

@@ -1958,7 +1958,7 @@ static void octstr_dump_debug(const Octstr *ostr, int
this_line_begins_at = 0;
for (pos = 0; pos < octstr_len(ostr); ) {
c = octstr_get_char(ostr, pos);
- sprintf(p, "%02x ", c);
+ snprintf(p, sizeof(buf), "%02x ", c);
p = strchr(p, '\0');
if (isprint(c))
*d++ = c;
@@ -2027,7 +2027,7 @@ do { \
this_line_begins_at = 0; \
for (pos = 0; pos < octstr_len(ostr); ) { \
c = octstr_get_char(ostr, pos); \
- sprintf(p, "%02x ", c); \
+ snprintf(p, sizeof(buf), "%02x ", c); \
p = strchr(p, '\0'); \
if (isprint(c)) \
*d++ = c; \
@@ -2304,28 +2304,28 @@ static void convert(Octstr *os, struct format *format,
tmpfmt[1] = 'l';
tmpfmt[2] = **fmt;
tmpfmt[3] = '\0';
- sprintf(tmpbuf, tmpfmt, u);
+ snprintf(tmpbuf, sizeof(tmpbuf), tmpfmt, u);
new = octstr_create(tmpbuf);
break;

case 'e':
case 'f':
case 'g':
- sprintf(tmpfmt, "%%");
+ snprintf(tmpfmt, sizeof(tmpfmt), "%%");
if (format->minus)
strcat(tmpfmt, "-");
if (format->zero)
strcat(tmpfmt, "0");
if (format->min_width > 0)
- sprintf(strchr(tmpfmt, '\0'),
+ snprintf(strchr(tmpfmt, '\0'), sizeof(tmpfmt),
"%ld", format->min_width);
if (format->has_prec)
- sprintf(strchr(tmpfmt, '\0'),
+ snprintf(strchr(tmpfmt, '\0'), sizeof(tmpfmt),
".%ld", format->prec);
if (format->type != '\0')
- sprintf(strchr(tmpfmt, '\0'),
+ snprintf(strchr(tmpfmt, '\0'), sizeof(tmpfmt),
"%c", (int) format->type);
- sprintf(strchr(tmpfmt, '\0'), "%c", **fmt);
+ snprintf(strchr(tmpfmt, '\0'), sizeof(tmpfmt), "%c", **fmt);
snprintf(tmpbuf, sizeof(tmpbuf),
tmpfmt, va_arg(VALST(args), double));
new = octstr_create(tmpbuf);
@@ -2342,7 +2342,7 @@ static void convert(Octstr *os, struct format *format,

case 'p':
p = va_arg(VALST(args), void *);
- sprintf(tmpfmt, "%p", p);
+ snprintf(tmpfmt, sizeof(tmpfmt), "%p", p);
new = octstr_create(tmpfmt);
break;

@@ -0,0 +1,21 @@
$OpenBSD$
--- test/decompile.c.orig Sun May 13 11:27:56 2012
+++ test/decompile.c Sun May 13 11:28:45 2012
@@ -1626,7 +1626,7 @@ static void CodepageAttrvalueName(WBXML_CODEPAGE page,
if (*value)
{
*value = realloc(*value, strlen(*value) + strlen(CodepageAttrvalueNames[i].m_name) + 1);
- strcat(*value, CodepageAttrvalueNames[i].m_name);
+ strlcat(*value, CodepageAttrvalueNames[i].m_name, sizeof(*value));
}
else
{
@@ -1779,7 +1779,7 @@ static void DumpNode(P_WBXML_NODE node, int indent, BO
if (node->m_data)
{
*value = realloc(*value, strlen(*value) + strlen((char*) node->m_data) + 1);
- strcat(*value, (char*) node->m_data);
+ strlcat(*value, (char*) node->m_data, sizeof(*value));
}
}
else
@@ -0,0 +1,12 @@
$OpenBSD$
--- test/test_cimd2.c.orig Sun May 13 11:26:36 2012
+++ test/test_cimd2.c Sun May 13 11:26:54 2012
@@ -321,7 +321,7 @@ static void make_timestamp(unsigned char *buf, time_t
/* Is there a thread-safe version of gmtime? */
struct tm tm = gw_gmtime(fortime);

- sprintf(buf, "%02d%02d%02d%02d%02d%02d",
+ snprintf(buf, sizeof(buf), "%02d%02d%02d%02d%02d%02d",
tm.tm_year % 100, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
}
@@ -0,0 +1,12 @@
$OpenBSD$
--- test/test_http.c.orig Sun May 13 11:27:16 2012
+++ test/test_http.c Sun May 13 11:27:31 2012
@@ -203,7 +203,7 @@ static void client_thread(void *arg)
succeeded = 0;
failed = 0;
reqh = gwlist_create();
- sprintf(buf, "%ld", (long) gwthread_self());
+ snprintf(buf, sizeof(buf), "%ld", (long) gwthread_self());
http_header_add(reqh, "X-Thread", buf);
if (auth_username != NULL && auth_password != NULL)
http_add_basic_auth(reqh, auth_username, auth_password);
@@ -0,0 +1,12 @@
$OpenBSD$
--- test/test_xmlrpc.c.orig Sun May 13 11:25:46 2012
+++ test/test_xmlrpc.c Sun May 13 11:26:03 2012
@@ -199,7 +199,7 @@ static void client_thread(void *arg)
failed = 0;
reqh = gwlist_create();

- sprintf(buf, "%ld", (long) gwthread_self());
+ snprintf(buf, sizeof(buf), "%ld", (long) gwthread_self());
http_header_add(reqh, "X-Thread", buf);
if (auth_username != NULL && auth_password != NULL)
http_add_basic_auth(reqh, auth_username, auth_password);
@@ -0,0 +1,11 @@
$OpenBSD$
--- utils/run_kannel_box.8.orig Mon May 14 00:49:06 2012
+++ utils/run_kannel_box.8 Mon May 14 00:50:30 2012
@@ -26,6 +26,4 @@ phones.
.PP
For more information,
see
-.B http://www.kannel.org
-or
-.BR file://usr/doc/kannel/ .
+.B http://www.kannel.org.
@@ -0,0 +1,21 @@
$OpenBSD$
--- wap/cookies.c.orig Sat May 12 13:44:08 2012
+++ wap/cookies.c Sun May 13 11:46:12 2012
@@ -569,7 +569,7 @@ static int parse_http_date(const char *expires)
ti.tm_mday = atoi(buf);
buf[6] = '\0';

- strcpy(month, &buf[3]);
+ strlcpy(month, &buf[3], sizeof(month));
ti.tm_year = atoi(&buf[7]);

/* Prevent wraparound from ambiguity */
@@ -620,7 +620,7 @@ static int parse_http_date(const char *expires)
if (rv - now < 0) {
/* This is bad - set the delta to 0 so we expire next time around */
error(0, "parse_http_date () Expiry time (%s) (delta=%ld) is in the past !",
- asctime(&ti), rv-now);
+ asctime(&ti), (long)rv-now);
return 0;
}

@@ -0,0 +1,13 @@
$OpenBSD$
--- wap/wap_addr.c.orig Sun May 13 02:42:26 2012
+++ wap/wap_addr.c Sun May 13 02:43:27 2012
@@ -59,6 +59,9 @@
*/

#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
#include <arpa/inet.h>

#include "gwlib/gwlib.h"
@@ -0,0 +1,30 @@
$OpenBSD$
--- wap/wsp.h.orig Sat May 12 16:20:16 2012
+++ wap/wsp.h Sat May 12 16:25:25 2012
@@ -112,7 +112,7 @@ struct WSPMachine {
#define REFERER(name) Octstr *name;
#define MACHINESLIST(name) List *name;
#define CAPABILITIES(name) List *name;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_server_session_machine.def"
};

@@ -121,7 +121,7 @@ struct WSPMethodMachine {
#define INTEGER(name) long name;
#define ADDRTUPLE(name) WAPAddrTuple *name;
#define EVENT(name) WAPEvent *name;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_server_method_machine.def"
};

@@ -129,7 +129,7 @@ struct WSPPushMachine {
#define INTEGER(name) long name;
#define ADDRTUPLE(name) WAPAddrTuple *name;
#define HTTPHEADER(name) List *name;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_server_push_machine.def"
};

@@ -0,0 +1,21 @@
$OpenBSD$
--- wap/wsp_push_client.c.orig Sat May 12 16:37:15 2012
+++ wap/wsp_push_client.c Sat May 12 16:37:34 2012
@@ -384,7 +384,7 @@ static WSPPushClientMachine *push_client_machine_creat

#define INTEGER(name) m->name = 0;
#define HTTPHEADERS(name) m->name = NULL;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_push_client_machine.def"

m->state = PUSH_CLIENT_NULL_STATE;
@@ -406,7 +406,7 @@ static void push_client_machine_destroy(void *a)

#define INTEGER(name) m->name = 0;
#define HTTPHEADERS(name) http_destroy_headers(m->name);
- #define MACHINE(fields) fields;
+ #define MACHINEWSP(fields) fields;
#include "wsp_push_client_machine.def"

gw_free(m);
@@ -0,0 +1,12 @@
$OpenBSD$
--- wap/wsp_push_client.h.orig Sat May 12 16:30:31 2012
+++ wap/wsp_push_client.h Sat May 12 16:30:45 2012
@@ -91,7 +91,7 @@ struct WSPPushClientMachine {
#define INTEGER(name) long name;
#define HTTPHEADERS(name) List *name;
#define OCTSTR(name) Octstr *name;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_push_client_machine.def"
};

@@ -0,0 +1,25 @@
$OpenBSD$
--- wap/wsp_push_client_machine.def.orig Sat May 12 16:27:27 2012
+++ wap/wsp_push_client_machine.def Sat May 12 16:27:52 2012
@@ -64,11 +64,11 @@
#error "Macro INTEGER not defined."
#elif !defined(HTTPHEADERS)
#error "Macro HTTPHEADERS not defined."
-#elif !defined(MACHINE)
- #error "Macro MACHINE is not defined."
+#elif !defined(MACHINEWSP)
+ #error "Macro MACHINEWSP is not defined."
#endif

-MACHINE(
+MACHINEWSP(
INTEGER(state)
INTEGER(client_push_id)
INTEGER(transaction_id)
@@ -78,5 +78,5 @@ MACHINE(

#undef INTEGER
#undef HTTPHEADERS
-#undef MACHINE
+#undef MACHINEWSP

@@ -0,0 +1,23 @@
$OpenBSD$
--- wap/wsp_server_method_machine.def.orig Sat May 12 16:24:36 2012
+++ wap/wsp_server_method_machine.def Sat May 12 16:25:06 2012
@@ -63,11 +63,11 @@
#if !defined(INTEGER) || \
!defined(ADDRTUPLE) || \
!defined(EVENT) || \
- !defined(MACHINE)
+ !defined(MACHINEWSP)
#error "Some required macro is missing."
#endif

-MACHINE(
+MACHINEWSP(
INTEGER(transaction_id)
INTEGER(state)
ADDRTUPLE(addr_tuple)
@@ -79,4 +79,4 @@ MACHINE(
#undef INTEGER
#undef ADDRTUPLE
#undef EVENT
-#undef MACHINE
+#undef MACHINEWSP
@@ -0,0 +1,32 @@
$OpenBSD$
--- wap/wsp_server_push_machine.def.orig Sat May 12 13:44:08 2012
+++ wap/wsp_server_push_machine.def Sat May 19 01:46:22 2012
@@ -61,8 +61,8 @@
* By Aarno Syv�nen for Wapit Ltd
*/

-#if !defined(MACHINE)
- #error "Definition of macro MACHINE is missing"
+#if !defined(MACHINEWSP)
+ #error "Definition of macro MACHINEWSP is missing"
#elif !defined(INTEGER)
#error "Definition of macro INTEGER is missing"
#elif !defined(ADDRTUPLE)
@@ -71,7 +71,7 @@
#error "Definition of macro HTTPHEADER is missing"
#endif

-MACHINE(
+MACHINEWSP(
INTEGER(state)
INTEGER(server_push_id)
INTEGER(session_id)
@@ -80,7 +80,7 @@ MACHINE(
HTTPHEADER(push_header)
)

-#undef MACHINE
+#undef MACHINEWSP
#undef INTEGER
#undef ADDRTUPLE
#undef HTTPHEADER
@@ -0,0 +1,28 @@
$OpenBSD$
--- wap/wsp_server_session_machine.def.orig Sat May 12 16:20:49 2012
+++ wap/wsp_server_session_machine.def Sat May 12 16:21:16 2012
@@ -68,13 +68,13 @@
!defined(COOKIES) || \
!defined(MACHINESLIST) || \
!defined(CAPABILITIES) || \
- !defined(MACHINE) || \
+ !defined(MACHINEWSP) || \
!defined(REFERER)
#error "Some required macro is missing."
#endif


-MACHINE(
+MACHINEWSP(
INTEGER(state)
INTEGER(connect_handle)
INTEGER(resume_handle)
@@ -100,7 +100,7 @@ MACHINE(
#undef HTTPHEADERS
#undef ADDRTUPLE
#undef MACHINESLIST
-#undef MACHINE
+#undef MACHINEWSP
#undef COOKIES
#undef CAPABILITIES
#undef REFERER
@@ -0,0 +1,57 @@
$OpenBSD$
--- wap/wsp_session.c.orig Sat May 12 16:37:59 2012
+++ wap/wsp_session.c Sat May 12 16:38:34 2012
@@ -494,7 +494,7 @@ static WSPMachine *machine_create(void) {
#define CAPABILITIES(name) p->name = NULL;
#define COOKIES(name) p->name = gwlist_create();
#define REFERER(name) p->name = NULL;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_server_session_machine.def"

p->state = NULL_SESSION;
@@ -547,7 +547,7 @@ static void machine_destroy(void *pp) {
#define CAPABILITIES(name) wsp_cap_destroy_list(p->name);
#define COOKIES(name) cookies_destroy(p->name);
#define REFERER(name) octstr_destroy(p->name);
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_server_session_machine.def"
gw_free(p);
}
@@ -612,7 +612,7 @@ static WSPMethodMachine *method_machine_create(WSPMach
#define INTEGER(name) msm->name = 0;
#define ADDRTUPLE(name) msm->name = NULL;
#define EVENT(name) msm->name = NULL;
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_server_method_machine.def"

msm->transaction_id = wtp_handle;
@@ -641,7 +641,7 @@ static void method_machine_destroy(void *p) {
#define INTEGER(name)
#define ADDRTUPLE(name) wap_addr_tuple_destroy(msm->name);
#define EVENT(name) wap_event_destroy(msm->name);
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_server_method_machine.def"

gw_free(msm);
@@ -694,7 +694,7 @@ static WSPPushMachine *push_machine_create(WSPMachine
#define INTEGER(name) m->name = 0;
#define ADDRTUPLE(name) m->name = NULL;
#define HTTPHEADER(name) m->name = http_create_empty_headers();
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_server_push_machine.def"

m->server_push_id = pid;
@@ -720,7 +720,7 @@ static void push_machine_destroy(void *p)
#define INTEGER(name)
#define ADDRTUPLE(name) wap_addr_tuple_destroy(m->name);
#define HTTPHEADER(name) http_destroy_headers(m->name);
- #define MACHINE(fields) fields
+ #define MACHINEWSP(fields) fields
#include "wsp_server_push_machine.def"

gw_free(m);
@@ -0,0 +1,21 @@
$OpenBSD$
--- wap/wtls.c.orig Sat May 12 16:39:08 2012
+++ wap/wtls.c Sat May 12 16:39:20 2012
@@ -977,7 +977,7 @@ static WTLSMachine *wtls_machine_create(WAPAddrTuple *
WTLSMachine *wtls_machine;
wtls_machine = gw_malloc(sizeof(WTLSMachine));

-#define MACHINE(field) field
+#define MACHINEWSP(field) field
#define ENUM(name) wtls_machine->name = NULL_STATE;
#define ADDRTUPLE(name) wtls_machine->name = NULL;
#define INTEGER(name) wtls_machine->name = 0;
@@ -1011,7 +1011,7 @@ static void wtls_machine_destroy(void *p)
wtls_machine->mid, (void *)wtls_machine);
gwlist_delete_equal(wtls_machines, wtls_machine);

-#define MACHINE(field) field
+#define MACHINEWSP(field) field
#define ENUM(name) wtls_machine->name = NULL_STATE;
#define ADDRTUPLE(name) wap_addr_tuple_destroy(wtls_machine->name);
#define INTEGER(name) wtls_machine->name = 0;
@@ -0,0 +1,12 @@
$OpenBSD$
--- wap/wtls.h.orig Sat May 12 16:39:34 2012
+++ wap/wtls.h Sat May 12 16:39:51 2012
@@ -95,7 +95,7 @@ struct WTLSMachine {
#define ADDRTUPLE(name) WAPAddrTuple *name;
#define INTEGER(name) int name;
#define OCTSTR(name) Octstr *name;
-#define MACHINE(field) field
+#define MACHINEWSP(field) field
#define PDULIST(name) List *name;
#include "wtls_machine-decl.h"
};
@@ -0,0 +1,32 @@
$OpenBSD$
--- wap/wtls_machine-decl.h.orig Sat May 12 17:20:50 2012
+++ wap/wtls_machine-decl.h Sat May 12 17:21:46 2012
@@ -83,8 +83,8 @@
*
*/

-#if !defined(MACHINE)
-#error "wtls_machine-decl.h: Macro MACHINE is missing."
+#if !defined(MACHINEWSP)
+#error "wtls_machine-decl.h: Macro MACHINEWSP is missing."
#elif !defined(ENUM)
#error "wtls_machine-decl.h: Macro ENUM is missing."
#elif !defined(ADDRTUPLE)
@@ -101,7 +101,7 @@
/* Last received packet maybe needs to be hashed according to Alert message in
case we need to send an alert. */

-MACHINE(ENUM(state)
+MACHINEWSP(ENUM(state)
ADDRTUPLE(addr_tuple) /* The source address/port and dest address/port */
INTEGER(bulk_cipher_algorithm) /* Bulk Cipher Algorithm identifier */
INTEGER(cipher_type) /* Cipher type */
@@ -138,7 +138,7 @@ MACHINE(ENUM(state)
OCTSTR(packet_to_send) /* A packet we're preparing to send */
)

-#undef MACHINE
+#undef MACHINEWSP
#undef ENUM
#undef ADDRTUPLE
#undef INTEGER

Large diffs are not rendered by default.

@@ -0,0 +1,21 @@
$OpenBSD$
--- wap/wtp_init.c.orig Sat May 12 16:40:36 2012
+++ wap/wtp_init.c Sat May 12 16:40:55 2012
@@ -238,7 +238,7 @@ static WTPInitMachine *init_machine_create(WAPAddrTupl
#define EVENT(name) init_machine->name = NULL;
#define TIMER(name) init_machine->name = gwtimer_create(queue);
#define ADDRTUPLE(name) init_machine->name = NULL;
- #define MACHINE(field) field
+ #define MACHINEWSP(field) field
#include "wtp_init_machine.def"

gwlist_append(init_machines, init_machine);
@@ -273,7 +273,7 @@ static void init_machine_destroy(void *p)
#define EVENT(name) wap_event_destroy(init_machine->name);
#define TIMER(name) gwtimer_destroy(init_machine->name);
#define ADDRTUPLE(name) wap_addr_tuple_destroy(init_machine->name);
- #define MACHINE(field) field
+ #define MACHINEWSP(field) field
#include "wtp_init_machine.def"
gw_free(init_machine);
}
@@ -0,0 +1,12 @@
$OpenBSD$
--- wap/wtp_init.h.orig Sat May 12 16:41:08 2012
+++ wap/wtp_init.h Sat May 12 16:41:22 2012
@@ -93,7 +93,7 @@ typedef struct WTPInitMachine {
#define TIMER(name) Timer *name;
#define ADDRTUPLE(name) WAPAddrTuple *name;
#define ENUM(name) init_states name;
- #define MACHINE(field) field
+ #define MACHINEWSP(field) field
#include "wtp_init_machine.def"
} WTPInitMachine;

@@ -0,0 +1,32 @@
$OpenBSD$
--- wap/wtp_init_machine.def.orig Sat May 12 16:45:32 2012
+++ wap/wtp_init_machine.def Sat May 12 16:45:54 2012
@@ -85,8 +85,8 @@
*/


-#if !defined(MACHINE)
- #error "Macro MACHINE is missing."
+#if !defined(MACHINEWSP)
+ #error "Macro MACHINEWSP is missing."
#elif !defined(INTEGER)
#error "Macro INTEGER is missing."
#elif !defined(ENUM)
@@ -99,7 +99,7 @@
#error "Macro ADDRTUPLE is missing."
#endif

-MACHINE(ENUM(state)
+MACHINEWSP(ENUM(state)
INTEGER(tid) /* transaction identifier */
ADDRTUPLE(addr_tuple)
INTEGER(tidnew) /* tidnew flag */
@@ -111,7 +111,7 @@ MACHINE(ENUM(state)
INTEGER(rid) /* are we resending invoke */
)

-#undef MACHINE
+#undef MACHINEWSP
#undef ENUM
#undef EVENT
#undef INTEGER
@@ -0,0 +1,21 @@
$OpenBSD$
--- wap/wtp_resp.c.orig Sat May 12 16:41:54 2012
+++ wap/wtp_resp.c Sat May 12 16:42:05 2012
@@ -600,7 +600,7 @@ static WTPRespMachine *resp_machine_create(WAPAddrTupl
#define ADDRTUPLE(name) resp_machine->name = NULL;
#define LIST(name) resp_machine->name = NULL;
#define SARDATA(name) resp_machine->name = NULL;
- #define MACHINE(field) field
+ #define MACHINEWSP(field) field
#include "wtp_resp_machine.def"

gwlist_append(resp_machines, resp_machine);
@@ -638,7 +638,7 @@ static void resp_machine_destroy(void * p)
#define ADDRTUPLE(name) wap_addr_tuple_destroy(resp_machine->name);
#define LIST(name) gwlist_destroy(resp_machine->name,sar_info_destroy);
#define SARDATA(name) sardata_destroy(resp_machine->name);
- #define MACHINE(field) field
+ #define MACHINEWSP(field) field
#include "wtp_resp_machine.def"
gw_free(resp_machine);
}
@@ -0,0 +1,12 @@
$OpenBSD$
--- wap/wtp_resp.h.orig Sat May 12 16:42:18 2012
+++ wap/wtp_resp.h Sat May 12 16:42:25 2012
@@ -121,7 +121,7 @@ struct WTPRespMachine {
#define EVENT(name) WAPEvent *name;
#define LIST(name) List *name;
#define SARDATA(name) WTPSARData *name;
- #define MACHINE(field) field
+ #define MACHINEWSP(field) field
#include "wtp_resp_machine.def"
};

@@ -0,0 +1,32 @@
$OpenBSD$
--- wap/wtp_resp_machine.def.orig Sat May 12 16:44:34 2012
+++ wap/wtp_resp_machine.def Sat May 12 16:45:05 2012
@@ -88,8 +88,8 @@
* e) packed result message, for greater effectivity
*/

-#if !defined(MACHINE)
- #error "Macro MACHINE is missing."
+#if !defined(MACHINEWSP)
+ #error "Macro MACHINEWSP is missing."
#elif !defined(INTEGER)
#error "Macro INTEGER is missing."
#elif !defined(ENUM)
@@ -106,7 +106,7 @@
#error "Macro ADDRTUPLE is missing."
#endif

-MACHINE(ENUM(state)
+MACHINEWSP(ENUM(state)
INTEGER(tid) /* transaction identifier */
ADDRTUPLE(addr_tuple)
INTEGER(tcl) /* transaction class */
@@ -128,7 +128,7 @@ MACHINE(ENUM(state)
SARDATA(sar) /* ! NULL if were we asked for SAR */
)

-#undef MACHINE
+#undef MACHINEWSP
#undef INTEGER
#undef ENUM
#undef TIMER
@@ -0,0 +1,14 @@
$OpenBSD$
--- wmlscript/wmlsc.c.orig Sun May 13 03:16:02 2012
+++ wmlscript/wmlsc.c Sun May 13 03:17:23 2012
@@ -198,8 +198,8 @@ int main(int argc, char *argv[])
strerror(errno));
exit(1);
}
- strcpy(outname, argv[i]);
- strcat(outname, "c");
+ strlcpy(outname, argv[i], sizeof(outname));
+ strlcat(outname, "c", sizeof(outname));

ofp = fopen(outname, "wb");
if (ofp == NULL) {
@@ -0,0 +1,12 @@
$OpenBSD$
--- wmlscript/wslexer.c.orig Sun May 13 11:58:40 2012
+++ wmlscript/wslexer.c Sun May 13 12:16:17 2012
@@ -112,6 +112,8 @@

/********************* Prototypes for static functions ******************/

+int ws_yy_lex(YYSTYPE *yylval, YYLTYPE *yylloc, void *context);
+
/* Check whether the identifier `id', `len' is a keyword. If the
identifier is a keyword, the function returns WS_TRUE and sets the
keywords token ID to `token_return'. Otherwise the function
@@ -0,0 +1,3 @@
Kannel is a compact and very powerful open source WAP and SMS gateway, used widely
across the globe both for serving trillions of short messages (SMS), WAP Push
service indications and mobile internet connectivity.
@@ -0,0 +1,178 @@
@comment $OpenBSD$
@newgroup _kannel:693
@newuser _kannel:693:693:daemon:Kannel:/nonexistent:/sbin/nologin
@bin bin/decode_emimsg
bin/gw-config
@bin bin/mtbatch
@bin bin/seewbmp
@bin bin/wmlsc
@bin bin/wmlsdasm
include/kannel/
include/kannel/gw/
include/kannel/gw-config.h
include/kannel/gw/alt_charsets.h
include/kannel/gw/bb.h
include/kannel/gw/bb_smscconn_cb.h
include/kannel/gw/bb_store.h
include/kannel/gw/bearerbox.h
include/kannel/gw/dlr.h
include/kannel/gw/dlr_p.h
include/kannel/gw/heartbeat.h
include/kannel/gw/html.h
include/kannel/gw/load.h
include/kannel/gw/meta_data.h
include/kannel/gw/mime_decompiler.h
include/kannel/gw/msg-decl.h
include/kannel/gw/msg.h
include/kannel/gw/numhash.h
include/kannel/gw/ota_compiler.h
include/kannel/gw/ota_prov.h
include/kannel/gw/ota_prov_attr.h
include/kannel/gw/shared.h
include/kannel/gw/sms.h
include/kannel/gw/smsc/
include/kannel/gw/smsc/emimsg.h
include/kannel/gw/smsc/smasi_pdu.def
include/kannel/gw/smsc/smasi_pdu.h
include/kannel/gw/smsc/smpp_pdu.def
include/kannel/gw/smsc/smpp_pdu.h
include/kannel/gw/smsc/smpp_pdu_opt.def
include/kannel/gw/smsc/smsc.h
include/kannel/gw/smsc/smsc_at.h
include/kannel/gw/smsc/smsc_p.h
include/kannel/gw/smsc/smsc_sema.h
include/kannel/gw/smscconn.h
include/kannel/gw/smscconn_p.h
include/kannel/gw/urltrans.h
include/kannel/gw/wap-appl.h
include/kannel/gw/wap-error.h
include/kannel/gw/wap-maps.h
include/kannel/gw/wap_ppg_push_machine.def
include/kannel/gw/wap_ppg_session_machine.def
include/kannel/gw/wap_push_ota.h
include/kannel/gw/wap_push_pap_compiler.h
include/kannel/gw/wap_push_pap_mime.h
include/kannel/gw/wap_push_ppg.h
include/kannel/gw/wap_push_ppg_pushuser.h
include/kannel/gw/wap_push_si_compiler.h
include/kannel/gw/wap_push_sl_compiler.h
include/kannel/gw/wbxml_tokens.def
include/kannel/gw/wml_compiler.h
include/kannel/gw/wml_definitions.h
include/kannel/gw/xml_definitions.h
include/kannel/gw/xml_shared.h
include/kannel/gwlib/
include/kannel/gwlib/accesslog.h
include/kannel/gwlib/cfg.def
include/kannel/gwlib/cfg.h
include/kannel/gwlib/charset.h
include/kannel/gwlib/conn.h
include/kannel/gwlib/counter.h
include/kannel/gwlib/date.h
include/kannel/gwlib/dbpool.h
include/kannel/gwlib/dbpool_p.h
include/kannel/gwlib/dict.h
include/kannel/gwlib/fdset.h
include/kannel/gwlib/gw-getopt.h
include/kannel/gwlib/gw-prioqueue.h
include/kannel/gwlib/gw-rwlock.h
include/kannel/gwlib/gw_uuid.h
include/kannel/gwlib/gw_uuid_types.h
include/kannel/gwlib/gwassert.h
include/kannel/gwlib/gwlib.h
include/kannel/gwlib/gwmem.h
include/kannel/gwlib/gwpoll.h
include/kannel/gwlib/gwthread.h
include/kannel/gwlib/html-entities.def
include/kannel/gwlib/http.h
include/kannel/gwlib/latin1_to_gsm.h
include/kannel/gwlib/list.h
include/kannel/gwlib/log.h
include/kannel/gwlib/md5.h
include/kannel/gwlib/mime.h
include/kannel/gwlib/octstr.h
include/kannel/gwlib/parse.h
include/kannel/gwlib/pcre.h
include/kannel/gwlib/pki.h
include/kannel/gwlib/protected.h
include/kannel/gwlib/regex.h
include/kannel/gwlib/semaphore.h
include/kannel/gwlib/socket.h
include/kannel/gwlib/ssl.h
include/kannel/gwlib/thread.h
include/kannel/gwlib/utils.h
include/kannel/gwlib/xmlrpc.h
include/kannel/wap/
include/kannel/wap/cookies.h
include/kannel/wap/timers.h
include/kannel/wap/wap.h
include/kannel/wap/wap_addr.h
include/kannel/wap/wap_events.def
include/kannel/wap/wap_events.h
include/kannel/wap/wsp.h
include/kannel/wap/wsp_caps.h
include/kannel/wap/wsp_headers.h
include/kannel/wap/wsp_pdu.def
include/kannel/wap/wsp_pdu.h
include/kannel/wap/wsp_push_client.h
include/kannel/wap/wsp_push_client_machine.def
include/kannel/wap/wsp_push_client_states.def
include/kannel/wap/wsp_server_method_machine.def
include/kannel/wap/wsp_server_method_states.def
include/kannel/wap/wsp_server_push_machine.def
include/kannel/wap/wsp_server_push_states.def
include/kannel/wap/wsp_server_session_machine.def
include/kannel/wap/wsp_server_session_states.def
include/kannel/wap/wsp_strings.def
include/kannel/wap/wsp_strings.h
include/kannel/wap/wtls.h
include/kannel/wap/wtls_machine-decl.h
include/kannel/wap/wtls_pdu.h
include/kannel/wap/wtls_pdusupport.h
include/kannel/wap/wtls_state-decl.h
include/kannel/wap/wtls_statesupport.h
include/kannel/wap/wtp.h
include/kannel/wap/wtp_init.h
include/kannel/wap/wtp_init_machine.def
include/kannel/wap/wtp_init_states.def
include/kannel/wap/wtp_pack.h
include/kannel/wap/wtp_pdu.def
include/kannel/wap/wtp_pdu.h
include/kannel/wap/wtp_resp.h
include/kannel/wap/wtp_resp_machine.def
include/kannel/wap/wtp_resp_states.def
include/kannel/wap/wtp_tid.h
lib/kannel/
lib/kannel/libgw.a
lib/kannel/libgwlib.a
lib/kannel/libwap.a
@man man/man1/mtbatch.1
@man man/man1/seewbmp.1
@man man/man1/wmlsc.1
@man man/man1/wmlsdasm.1
@man man/man8/kannel.8
@man man/man8/run_kannel_box.8
@bin sbin/bearerbox
sbin/kannelctl
@bin sbin/run_kannel_box
@bin sbin/smsbox
sbin/smsbox_enable
@bin sbin/wapbox
sbin/wapbox_enable
share/doc/pkg-readmes/${FULLPKGNAME}
share/examples/kannel/
@sample ${SYSCONFDIR}/kannel/
share/examples/kannel/dlr-mysql.conf
share/examples/kannel/dlr-sqlite3.conf
share/examples/kannel/kannel.conf
@sample ${SYSCONFDIR}/kannel/kannel.conf
share/examples/kannel/modems.conf
@sample ${SYSCONFDIR}/kannel/modems.conf
@sample share/kannel/
@mode 770
@owner root
@group _kannel
@sample /var/log/kannel/
@owner _kannel
@sample /var/spool/kannel/
@rcscript ${RCDIR}/kannel
@@ -0,0 +1,20 @@
$OpenBSD:

+-----------------------------------------------------------------------
| Running ${FULLPKGNAME} on OpenBSD
+-----------------------------------------------------------------------

Post-installation steps
=======================
1. Carefully edit ${SYSCONFDIR}/kannel/kannel.conf.

2. Enable SMS or/and WAP box

# ${PREFIX}/sbin/smsbox_enable
# ${PREFIX}/sbin/wapbox_enable

3. Launch kannel with /etc/rc.d/kannel start

Random hints
============
Check /var/log/kannel/*.log if something goes wrong.
@@ -0,0 +1,23 @@
#!/bin/sh
#
# $OpenBSD:

daemon="${TRUEPREFIX}/sbin/bearerbox"

. /etc/rc.d/rc.subr

rc_pre() {
install -d -o _kannel /var/run/kannel
}

rc_start() {
${rcexec} "${TRUEPREFIX}/sbin/kannelctl start"
}

rc_stop() {
${rcexec} "${TRUEPREFIX}/sbin/kannelctl stop"
}

rc_reload=NO

rc_cmd $1