Revision b55266b5 slirp/tftp.c

b/slirp/tftp.c
149 149
    m->m_data += sizeof(struct udpiphdr);
150 150

  
151 151
    tp->tp_op = htons(TFTP_OACK);
152
    n += snprintf(tp->x.tp_buf + n, sizeof(tp->x.tp_buf) - n, "%s", key) + 1;
153
    n += snprintf(tp->x.tp_buf + n, sizeof(tp->x.tp_buf) - n, "%u", value) + 1;
152
    n += snprintf((char *)tp->x.tp_buf + n, sizeof(tp->x.tp_buf) - n, "%s",
153
                  key) + 1;
154
    n += snprintf((char *)tp->x.tp_buf + n, sizeof(tp->x.tp_buf) - n, "%u",
155
                  value) + 1;
154 156

  
155 157
    saddr.sin_addr = recv_tp->ip.ip_dst;
156 158
    saddr.sin_port = recv_tp->udp.uh_dport;
......
190 192

  
191 193
  tp->tp_op = htons(TFTP_ERROR);
192 194
  tp->x.tp_error.tp_error_code = htons(errorcode);
193
  pstrcpy(tp->x.tp_error.tp_msg, sizeof(tp->x.tp_error.tp_msg), msg);
195
  pstrcpy((char *)tp->x.tp_error.tp_msg, sizeof(tp->x.tp_error.tp_msg), msg);
194 196

  
195 197
  saddr.sin_addr = recv_tp->ip.ip_dst;
196 198
  saddr.sin_port = recv_tp->udp.uh_dport;
......
325 327
  /* do sanity checks on the filename */
326 328

  
327 329
  if ((spt->filename[0] != '/')
328
      || (spt->filename[strlen(spt->filename) - 1] == '/')
329
      ||  strstr(spt->filename, "/../")) {
330
      || (spt->filename[strlen((char *)spt->filename) - 1] == '/')
331
      ||  strstr((char *)spt->filename, "/../")) {
330 332
      tftp_send_error(spt, 2, "Access violation", tp);
331 333
      return;
332 334
  }
......
353 355
  while (k < n) {
354 356
      const char *key, *value;
355 357

  
356
      key = src + k;
358
      key = (char *)src + k;
357 359
      k += strlen(key) + 1;
358 360

  
359 361
      if (k >= n) {
......
361 363
	  return;
362 364
      }
363 365

  
364
      value = src + k;
366
      value = (char *)src + k;
365 367
      k += strlen(value) + 1;
366 368

  
367 369
      if (strcmp(key, "tsize") == 0) {

Also available in: Unified diff