smbcomdeletedir.c 659 B

123456789101112131415161718192021222324
  1. #include "headers.h"
  2. SmbProcessResult
  3. smbcomdeletedirectory(SmbSession *s, SmbHeader *h, uchar *, SmbBuffer *b)
  4. {
  5. int rv;
  6. char *path;
  7. uchar fmt;
  8. if (h->wordcount != 0)
  9. return SmbProcessResultFormat;
  10. if (!smbbuffergetb(b, &fmt) || fmt != 0x04 || !smbbuffergetstring(b, h, SMB_STRING_PATH, &path))
  11. return SmbProcessResultFormat;
  12. smblogprint(h->command, "smbcomdeletedirectory: %s\n", path);
  13. rv = remove(path);
  14. if (rv < 0) {
  15. smblogprint(h->command, "smbcomdeletedirectory failed: %r\n");
  16. smbseterror(s, ERRDOS, ERRnoaccess);
  17. free(path);
  18. return SmbProcessResultError;
  19. }
  20. free(path);
  21. return smbbufferputack(s->response, h, &s->peerinfo);
  22. }