... | ... |
@@ -830,10 +830,10 @@ void chexit() |
830 | 830 |
char cwd[PATH_MAX]; |
831 | 831 |
if(moption.chroot){ |
832 | 832 |
if(uname(&uts) == -1){ |
833 |
- return(-1); |
|
833 |
+ return; |
|
834 | 834 |
} |
835 | 835 |
if(strcmp("Linux", uts.sysname)){ |
836 |
- return(-1); |
|
836 |
+ return; |
|
837 | 837 |
} |
838 | 838 |
/*----- chroot exit(linux only) -----*/ |
839 | 839 |
mtempname("",".MAKUOWORK",cwd); |
... | ... |
@@ -848,7 +848,7 @@ void chexit() |
848 | 848 |
} |
849 | 849 |
chroot("."); |
850 | 850 |
} |
851 |
- return(0); |
|
851 |
+ return; |
|
852 | 852 |
} |
853 | 853 |
|
854 | 854 |
void restoreguid() |
... | ... |
@@ -689,6 +689,7 @@ static mfile *mrecv_req_send_create(mdata *data, struct sockaddr_in *addr) |
689 | 689 |
mfile *m; |
690 | 690 |
uint16_t fnlen; |
691 | 691 |
uint16_t lnlen; |
692 |
+ uint64_t rdev; |
|
692 | 693 |
|
693 | 694 |
if(data->head.nstate != MAKUO_SENDSTATE_STAT){ |
694 | 695 |
return(NULL); |
... | ... |
@@ -729,11 +730,12 @@ static mfile *mrecv_req_send_create(mdata *data, struct sockaddr_in *addr) |
729 | 729 |
data->p += lnlen; |
730 | 730 |
|
731 | 731 |
/* rdev */ |
732 |
- m->fs.st_rdev = ntohl(*(uint32_t *)(data->p)); |
|
732 |
+ rdev = ntohl(*(uint32_t *)(data->p)); |
|
733 | 733 |
data->p += sizeof(uint32_t); |
734 |
- m->fs.st_rdev <<= 32; |
|
735 |
- m->fs.st_rdev |= ntohl(*(uint32_t *)(data->p)); |
|
734 |
+ rdev <<= 32; |
|
735 |
+ rdev |= ntohl(*(uint32_t *)(data->p)); |
|
736 | 736 |
data->p += sizeof(uint32_t); |
737 |
+ m->fs.st_rdev = (dev_t)rdev; |
|
737 | 738 |
|
738 | 739 |
/* Number of blocks */ |
739 | 740 |
m->seqnomax = m->fs.st_size / MAKUO_BUFFER_SIZE; |
... | ... |
@@ -199,7 +199,8 @@ static void msend_req_send_break(int s, mfile *m) |
199 | 199 |
|
200 | 200 |
static void msend_req_send_stat_init(int s, mfile *m) |
201 | 201 |
{ |
202 |
- mstat fs; |
|
202 |
+ mstat fs; |
|
203 |
+ uint64_t rdev; |
|
203 | 204 |
if(!m->comm){ |
204 | 205 |
msend_mfdel(m); |
205 | 206 |
m = NULL; |
... | ... |
@@ -230,9 +231,11 @@ static void msend_req_send_stat_init(int s, mfile *m) |
230 | 230 |
m->mdata.p += strlen(m->fn); |
231 | 231 |
strcpy(m->mdata.p, m->ln); |
232 | 232 |
m->mdata.p += strlen(m->ln); |
233 |
- *(uint32_t *)(m->mdata.p) = htonl((uint32_t)(m->fs.st_rdev >> 32)); |
|
233 |
+ |
|
234 |
+ rdev = (uint64_t)(m->fs.st_rdev); |
|
235 |
+ *(uint32_t *)(m->mdata.p) = htonl((uint32_t)(rdev >> 32)); |
|
234 | 236 |
m->mdata.p += sizeof(uint32_t); |
235 |
- *(uint32_t *)(m->mdata.p) = htonl((uint32_t)(m->fs.st_rdev & 0xFFFFFFFF)); |
|
237 |
+ *(uint32_t *)(m->mdata.p) = htonl((uint32_t)(rdev & 0xFFFFFFFF)); |
|
236 | 238 |
m->mdata.p += sizeof(uint32_t); |
237 | 239 |
m->sendwait = 1; |
238 | 240 |
m->initstate = 0; |