logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

0003-Remove-pointer-arithmetic-on-void.patch (6124B)


  1. From fa651ab426b8c6be7398799ebab26e87918cc5f1 Mon Sep 17 00:00:00 2001
  2. From: Michael Forney <mforney@mforney.org>
  3. Date: Thu, 21 Feb 2019 23:28:17 -0800
  4. Subject: [PATCH] Remove pointer arithmetic on void *
  5. ---
  6. lasagna/cdb/cdb_dynread.c | 2 +-
  7. lasagna/dynbuf/dynbuf_pack.c | 2 +-
  8. lasagna/dynbuf/dynbuf_put.c | 5 +++--
  9. lasagna/hdb/hdb_dynread.c | 2 +-
  10. lasagna/ioq/ioq_put.c | 10 +++++-----
  11. lasagna/packet/packet_write.c | 5 +++--
  12. perp/tinylog.c | 4 ++--
  13. runtools/runchoom.c | 4 ++--
  14. 8 files changed, 18 insertions(+), 16 deletions(-)
  15. diff --git a/lasagna/cdb/cdb_dynread.c b/lasagna/cdb/cdb_dynread.c
  16. index b7135c5..f5e7ab8 100644
  17. --- a/lasagna/cdb/cdb_dynread.c
  18. +++ b/lasagna/cdb/cdb_dynread.c
  19. @@ -23,7 +23,7 @@ cdb_dynread(struct cdb *C, struct dynbuf *B, size_t len, uint32_t offset)
  20. if(dynbuf_grow(B, len) == -1)
  21. return -1;
  22. - if(cdb_read(C, dynbuf_BUF(B) + dynbuf_LEN(B), len, offset) == -1)
  23. + if(cdb_read(C, (uchar_t *)dynbuf_BUF(B) + dynbuf_LEN(B), len, offset) == -1)
  24. return -1;
  25. dynbuf_LEN(B) += len;
  26. diff --git a/lasagna/dynbuf/dynbuf_pack.c b/lasagna/dynbuf/dynbuf_pack.c
  27. index 84727cb..4543a0a 100644
  28. --- a/lasagna/dynbuf/dynbuf_pack.c
  29. +++ b/lasagna/dynbuf/dynbuf_pack.c
  30. @@ -46,7 +46,7 @@ dynbuf_pack(struct dynbuf *D, const char *fmt, ...)
  31. }
  32. /* with need satisfied, append directly into buf: */
  33. - b = (D->buf + D->p);
  34. + b = (uchar_t *)D->buf + D->p;
  35. va_start(args, fmt);
  36. w = upak_vpack(b, fmt, args);
  37. diff --git a/lasagna/dynbuf/dynbuf_put.c b/lasagna/dynbuf/dynbuf_put.c
  38. index 6ff7bdb..46989c4 100644
  39. --- a/lasagna/dynbuf/dynbuf_put.c
  40. +++ b/lasagna/dynbuf/dynbuf_put.c
  41. @@ -19,10 +19,11 @@ dynbuf_putbuf(struct dynbuf *d, const void *buf, size_t len)
  42. if(dynbuf_grow(d, (len + 1)) != 0)
  43. return -1; /* error! */
  44. - buf_copy((d->buf + d->p), buf, len);
  45. + b = d->buf;
  46. + buf_copy(b + d->p, buf, len);
  47. d->p += len;
  48. - b = d->buf; b[d->p] = 'Q'; /* "offensive programming" */
  49. + b[d->p] = 'Q'; /* "offensive programming" */
  50. return 0; /* no error */
  51. }
  52. diff --git a/lasagna/hdb/hdb_dynread.c b/lasagna/hdb/hdb_dynread.c
  53. index cd818bc..82d20d2 100644
  54. --- a/lasagna/hdb/hdb_dynread.c
  55. +++ b/lasagna/hdb/hdb_dynread.c
  56. @@ -23,7 +23,7 @@ hdb_dynread(struct hdb *H, struct dynbuf *B, size_t len, uint32_t offset)
  57. if(dynbuf_grow(B, len) == -1)
  58. return -1;
  59. - if(hdb_read(H, dynbuf_BUF(B) + dynbuf_LEN(B), len, offset) == -1)
  60. + if(hdb_read(H, (uchar_t *)dynbuf_BUF(B) + dynbuf_LEN(B), len, offset) == -1)
  61. return -1;
  62. dynbuf_LEN(B) += len;
  63. diff --git a/lasagna/ioq/ioq_put.c b/lasagna/ioq/ioq_put.c
  64. index 47f4897..20737a6 100644
  65. --- a/lasagna/ioq/ioq_put.c
  66. +++ b/lasagna/ioq/ioq_put.c
  67. @@ -44,7 +44,7 @@
  68. /* internal declarations: */
  69. -static int write_all(int fd, void *buf, size_t to_write, ssize_t (*op)());
  70. +static int write_all(int fd, uchar_t *buf, size_t to_write, ssize_t (*op)());
  71. /*
  72. @@ -63,13 +63,13 @@ static int write_all(int fd, void *buf, size_t to_write, ssize_t (*op)());
  73. */
  74. static
  75. int
  76. -write_all(int fd, void *buf, size_t to_write, ssize_t (*op)())
  77. +write_all(int fd, uchar_t *buf, size_t to_write, ssize_t (*op)())
  78. {
  79. ssize_t w = 0;
  80. while(to_write){
  81. do{
  82. - w = op(fd, buf, to_write);
  83. + w = op(fd, (void *)buf, to_write);
  84. }while((w == -1) && (errno == EINTR));
  85. if(w == -1) return -1; /* error! */
  86. @@ -137,7 +137,7 @@ ioq_put(ioq_t *ioq, const uchar_t *data, size_t len)
  87. while(len > ioq->n){
  88. /* don't write more than len! */
  89. if(len < n) n = len;
  90. - if(write_all(ioq->fd, (void *)data, n, ioq->op) == -1){
  91. + if(write_all(ioq->fd, (uchar_t *)data, n, ioq->op) == -1){
  92. /* write() error: */
  93. return -1;
  94. }
  95. @@ -178,7 +178,7 @@ ioq_putflush(ioq_t *ioq, const uchar_t *data, size_t len)
  96. if(ioq_flush(ioq) == -1) return -1;
  97. /* write() the rest */
  98. - return write_all(ioq->fd, (void *)data, len, ioq->op);
  99. + return write_all(ioq->fd, (uchar_t *)data, len, ioq->op);
  100. }
  101. diff --git a/lasagna/packet/packet_write.c b/lasagna/packet/packet_write.c
  102. index 66c5f8c..6af6a94 100644
  103. --- a/lasagna/packet/packet_write.c
  104. +++ b/lasagna/packet/packet_write.c
  105. @@ -50,11 +50,12 @@ packet_write(int fd, const void *packet, size_t n)
  106. {
  107. ssize_t w = 0;
  108. size_t to_write = n;
  109. + const char *b = packet;
  110. while(to_write > 0){
  111. do{
  112. - w = write(fd, packet, to_write);
  113. + w = write(fd, b, to_write);
  114. }while((w == -1) && (errno == EINTR));
  115. if(w == -1)
  116. @@ -63,7 +64,7 @@ packet_write(int fd, const void *packet, size_t n)
  117. if(w == 0)
  118. continue;
  119. - packet += w;
  120. + b += w;
  121. to_write -= w;
  122. }
  123. diff --git a/perp/tinylog.c b/perp/tinylog.c
  124. index 8df6283..a593a66 100644
  125. --- a/perp/tinylog.c
  126. +++ b/perp/tinylog.c
  127. @@ -124,7 +124,7 @@ const char *gzip_path = NULL;
  128. /*
  129. ** declarations in scope:
  130. */
  131. -static void write_all(int fd, void *buf, size_t len);
  132. +static void write_all(int fd, char *buf, size_t len);
  133. static void stamp8601_make(char *stamp_buf);
  134. static void init_logdir(struct tinylog *tinylog);
  135. static void init_current(struct tinylog *tinylog, int resume);
  136. @@ -182,7 +182,7 @@ ssize_t read_op(int fd, void *buf, size_t len)
  137. */
  138. static
  139. void
  140. -write_all(int fd, void *buf, size_t len)
  141. +write_all(int fd, char *buf, size_t len)
  142. {
  143. ssize_t w = 0;
  144. tain_t epause = tain_INIT(0, EPAUSE);
  145. diff --git a/runtools/runchoom.c b/runtools/runchoom.c
  146. index e318e2a..0682ad3 100644
  147. --- a/runtools/runchoom.c
  148. +++ b/runtools/runchoom.c
  149. @@ -59,7 +59,7 @@ static char setbuf[256];
  150. static char pidfmt[NFMT_SIZE];
  151. /* functions in scope: */
  152. -static int write_all(int fd, void *buf, size_t to_write);
  153. +static int write_all(int fd, char *buf, size_t to_write);
  154. static void do_choom(void);
  155. /* syserr_warn() macro: */
  156. @@ -77,7 +77,7 @@ static void do_choom(void);
  157. static
  158. int
  159. -write_all(int fd, void *buf, size_t to_write)
  160. +write_all(int fd, char *buf, size_t to_write)
  161. {
  162. ssize_t w = 0;
  163. --
  164. 2.20.1