X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=libatalk%2Fdsi%2Fdsi_write.c;h=1cf25e64c6516ea65e4144f63eafcd625fdb72d2;hp=13a723470153895766530e65235d3a2b00c6070d;hb=8e5e83dac34cf886996821a51dee5c971e7c51f2;hpb=f929f4e41ead6abd4cf05d4aeca5ce1f5942e569 diff --git a/libatalk/dsi/dsi_write.c b/libatalk/dsi/dsi_write.c index 13a72347..1cf25e64 100644 --- a/libatalk/dsi/dsi_write.c +++ b/libatalk/dsi/dsi_write.c @@ -33,14 +33,14 @@ size_t dsi_writeinit(DSI *dsi, void *buf, const size_t buflen _U_) /* figure out how much data we have. do a couple checks for 0 * data */ - header = ntohl(dsi->header.dsi_code); + header = ntohl(dsi->header.dsi_doff); dsi->datasize = header ? ntohl(dsi->header.dsi_len) - header : 0; if (dsi->datasize > 0) { - len = MIN(sizeof(dsi->commands) - header, dsi->datasize); + len = MIN(dsi->server_quantum - header, dsi->datasize); /* write last part of command buffer into buf */ - memcpy(buf, dsi->commands + header, len); + memmove(buf, dsi->commands + header, len); /* recalculate remaining data */ dsi->datasize -= len;