From c57babc9b18939d9705acf749fe610b322280359 Mon Sep 17 00:00:00 2001 From: Jason Benaim Date: Sun, 10 Mar 2019 18:32:57 -0700 Subject: [PATCH] C99 -> ANSI for comms.c, handlers.c --- comms.c | 55 +++++++++++++++++++++++++++++++++++------------------- handlers.c | 52 ++++++++++++++++++++++++++------------------------- 2 files changed, 63 insertions(+), 44 deletions(-) diff --git a/comms.c b/comms.c index a4caee6..9c609a4 100644 --- a/comms.c +++ b/comms.c @@ -10,6 +10,9 @@ bool hs100_encrypt(uint8_t *d, uint8_t *s, size_t len) { + uint8_t key, temp; + size_t i; + if (d == NULL) return false; if (s == NULL) @@ -17,9 +20,9 @@ bool hs100_encrypt(uint8_t *d, uint8_t *s, size_t len) if (len == 0) return false; - uint8_t key = 0xab; - for (size_t i = 0; i < len; i++) { - uint8_t temp = key ^ s[i]; + key = 0xab; + for (i = 0; i < len; i++) { + temp = key ^ s[i]; key = temp; d[i] = temp; } @@ -28,6 +31,9 @@ bool hs100_encrypt(uint8_t *d, uint8_t *s, size_t len) bool hs100_decrypt(uint8_t *d, uint8_t *s, size_t len) { + uint8_t key, temp; + size_t i; + if (d == NULL) return false; if (s == NULL) @@ -35,9 +41,9 @@ bool hs100_decrypt(uint8_t *d, uint8_t *s, size_t len) if (len == 0) return false; - uint8_t key = 0xab; - for (size_t i = 0; i < len; i++) { - uint8_t temp = key ^ s[i]; + key = 0xab; + for (i = 0; i < len; i++) { + temp = key ^ s[i]; key = s[i]; d[i] = temp; } @@ -46,19 +52,23 @@ bool hs100_decrypt(uint8_t *d, uint8_t *s, size_t len) uint8_t *hs100_encode(size_t *outlen, char *srcmsg) { + size_t srcmsg_len; + uint8_t *d; + uint32_t temp; + if (srcmsg == NULL) return NULL; - size_t srcmsg_len = strlen(srcmsg); + srcmsg_len = strlen(srcmsg); *outlen = srcmsg_len + 4; - uint8_t *d = calloc(1, *outlen); + d = calloc(1, *outlen); if (d == NULL) return NULL; if (!hs100_encrypt(d + 4, (uint8_t *) srcmsg, srcmsg_len)) { free(d); return NULL; } - uint32_t temp = htonl(srcmsg_len); + temp = htonl(srcmsg_len); memcpy(d, &temp, 4); return d; @@ -66,20 +76,22 @@ uint8_t *hs100_encode(size_t *outlen, char *srcmsg) char *hs100_decode(uint8_t *s, size_t s_len) { + uint32_t in_s_len; + char *outbuf; + if (s == NULL) return NULL; if (s_len <= 4) return NULL; - uint32_t in_s_len; memcpy(&in_s_len, s, 4); in_s_len = ntohl(in_s_len); if ((s_len - 4) < in_s_len) { - // packet was cut short- adjust in_s_len + /* packet was cut short- adjust in_s_len */ in_s_len = s_len - 4; } - char *outbuf = calloc(1, in_s_len + 1); + outbuf = calloc(1, in_s_len + 1); if (!hs100_decrypt((uint8_t *) outbuf, s + 4, in_s_len)) { free(outbuf); @@ -92,15 +104,21 @@ char *hs100_decode(uint8_t *s, size_t s_len) char *hs100_send(char *servaddr, char *msg) { size_t s_len; - uint8_t *s = hs100_encode(&s_len, msg); + int sock; + uint8_t *s, *recvbuf; + struct sockaddr_in address; + uint32_t msglen; + size_t recvsize; + char *recvmsg; + + s = hs100_encode(&s_len, msg); if (s == NULL) return NULL; - int sock = socket(AF_INET, SOCK_STREAM, 0); + sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) return NULL; - struct sockaddr_in address; memset(&address, '0', sizeof(struct sockaddr_in)); address.sin_family = AF_INET; @@ -115,16 +133,15 @@ char *hs100_send(char *servaddr, char *msg) send(sock, s, s_len, 0); free(s); - uint32_t msglen; - size_t recvsize = recv(sock, &msglen, sizeof(msglen), MSG_PEEK); + recvsize = recv(sock, &msglen, sizeof(msglen), MSG_PEEK); if (recvsize != sizeof(msglen)) { return NULL; } msglen = ntohl(msglen) + 4; - uint8_t *recvbuf = calloc(1, (size_t) msglen); + recvbuf = calloc(1, (size_t) msglen); recvsize = recv(sock, recvbuf, msglen, MSG_WAITALL); close(sock); - char *recvmsg = hs100_decode(recvbuf, msglen); + recvmsg = hs100_decode(recvbuf, msglen); free(recvbuf); return recvmsg; } diff --git a/handlers.c b/handlers.c index 78c06a3..5612356 100644 --- a/handlers.c +++ b/handlers.c @@ -6,58 +6,60 @@ char *handler_associate(int argc, char *argv[]) { - if (argc < 6) { - fprintf(stderr, "not enough arguments\n"); - exit(1); - } + const char *template = + "{\"netif\":{\"set_stainfo\":{\"ssid\":\"%s\",\"password\":" + "\"%s\",\"key_type\":%d}}}"; char *plug_addr = argv[1]; char *ssid = argv[3]; char *password = argv[4]; char *key_type = argv[5]; + char *endptr, *msg, *response; + int key_type_num; + size_t len; + if (argc < 6) { + fprintf(stderr, "not enough arguments\n"); + exit(1); + } errno = 0; - char *endptr; - int key_type_num = (int)strtol(key_type, &endptr, 10); + key_type_num = (int)strtol(key_type, &endptr, 10); if (errno || endptr == key_type) { fprintf(stderr, "invalid key type: %s\n", key_type); exit(1); } - const char *template = - "{\"netif\":{\"set_stainfo\":{\"ssid\":\"%s\",\"password\":" - "\"%s\",\"key_type\":%d}}}"; + len = snprintf(NULL, 0, template, ssid, password, + key_type_num); + len++; /* snprintf does not count the null terminator */ - size_t len = snprintf(NULL, 0, template, ssid, password, - key_type_num); - len++; // snprintf does not count the null terminator - - char *msg = calloc(1, len); + msg = calloc(1, len); snprintf(msg, len, template, ssid, password, key_type_num); - char *response = hs100_send(plug_addr, msg); + response = hs100_send(plug_addr, msg); return response; } char *handler_set_server(int argc, char *argv[]) { + const char *template = + "{\"cnCloud\":{\"set_server_url\":{\"server\":\"%s\"}}}"; + char *plug_addr = argv[1]; + char *server = argv[3]; + size_t len; + char *msg, *response; + if (argc < 4) { fprintf(stderr, "not enough arguments\n"); exit(1); } - char *plug_addr = argv[1]; - char *server = argv[3]; + len = snprintf(NULL, 0, template, server); + len++; /* snprintf does not count the null terminator */ - const char *template = - "{\"cnCloud\":{\"set_server_url\":{\"server\":\"%s\"}}}"; - - size_t len = snprintf(NULL, 0, template, server); - len++; // snprintf does not count the null terminator - - char *msg = calloc(1, len); + msg = calloc(1, len); snprintf(msg, len, template, server); - char *response = hs100_send(plug_addr, msg); + response = hs100_send(plug_addr, msg); return response; }