Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
emulab
emulab-devel
Commits
cee54de1
Commit
cee54de1
authored
Jul 17, 2014
by
Mike Hibler
Browse files
Whoops, forgot to cannonicalize imageid on PUT operations.
parent
bc7c6e40
Changes
1
Hide whitespace changes
Inline
Side-by-side
clientside/os/frisbee.redux/mserver.c
View file @
cee54de1
...
@@ -1086,7 +1086,7 @@ handle_put(int sock, struct sockaddr_in *sip, struct sockaddr_in *cip,
...
@@ -1086,7 +1086,7 @@ handle_put(int sock, struct sockaddr_in *sip, struct sockaddr_in *cip,
{
{
struct
in_addr
host
,
in
;
struct
in_addr
host
,
in
;
in_addr_t
myaddr
;
in_addr_t
myaddr
;
char
imageid
[
MS_MAXIDLEN
+
1
];
char
imageid
[
MS_MAXIDLEN
+
1
]
,
*
cimageid
;
char
clientip
[
sizeof
(
"XXX.XXX.XXX.XXX"
)
+
1
];
char
clientip
[
sizeof
(
"XXX.XXX.XXX.XXX"
)
+
1
];
int
len
;
int
len
;
struct
config_host_authinfo
*
ai
;
struct
config_host_authinfo
*
ai
;
...
@@ -1112,6 +1112,11 @@ handle_put(int sock, struct sockaddr_in *sip, struct sockaddr_in *cip,
...
@@ -1112,6 +1112,11 @@ handle_put(int sock, struct sockaddr_in *sip, struct sockaddr_in *cip,
len
=
ntohs
(
msg
->
body
.
putrequest
.
idlen
);
len
=
ntohs
(
msg
->
body
.
putrequest
.
idlen
);
memcpy
(
imageid
,
msg
->
body
.
putrequest
.
imageid
,
len
);
memcpy
(
imageid
,
msg
->
body
.
putrequest
.
imageid
,
len
);
imageid
[
len
]
=
'\0'
;
imageid
[
len
]
=
'\0'
;
cimageid
=
config_canonicalize_imageid
(
imageid
);
if
(
cimageid
!=
NULL
&&
strcmp
(
cimageid
,
imageid
)
==
0
)
{
free
(
cimageid
);
cimageid
=
NULL
;
}
wantstatus
=
msg
->
body
.
putrequest
.
status
;
wantstatus
=
msg
->
body
.
putrequest
.
status
;
op
=
wantstatus
?
"PUTSTATUS"
:
"PUT"
;
op
=
wantstatus
?
"PUTSTATUS"
:
"PUT"
;
isize
=
((
uint64_t
)
ntohl
(
msg
->
body
.
putrequest
.
hisize
)
<<
32
)
|
isize
=
((
uint64_t
)
ntohl
(
msg
->
body
.
putrequest
.
hisize
)
<<
32
)
|
...
@@ -1120,18 +1125,38 @@ handle_put(int sock, struct sockaddr_in *sip, struct sockaddr_in *cip,
...
@@ -1120,18 +1125,38 @@ handle_put(int sock, struct sockaddr_in *sip, struct sockaddr_in *cip,
timo
=
ntohl
(
msg
->
body
.
putrequest
.
timeout
);
timo
=
ntohl
(
msg
->
body
.
putrequest
.
timeout
);
strncpy
(
clientip
,
inet_ntoa
(
cip
->
sin_addr
),
sizeof
clientip
);
strncpy
(
clientip
,
inet_ntoa
(
cip
->
sin_addr
),
sizeof
clientip
);
if
(
host
.
s_addr
!=
cip
->
sin_addr
.
s_addr
)
if
(
cimageid
==
NULL
)
{
FrisLog
(
"%s: %s from %s (for %s), size=%llu"
,
if
(
host
.
s_addr
!=
cip
->
sin_addr
.
s_addr
)
imageid
,
op
,
clientip
,
inet_ntoa
(
host
),
isize
);
FrisLog
(
"%s: %s from %s (for %s), size=%llu"
,
else
imageid
,
op
,
clientip
,
inet_ntoa
(
host
),
isize
);
FrisLog
(
"%s: %s from %s, size=%llu"
,
else
imageid
,
op
,
clientip
,
isize
);
FrisLog
(
"%s: %s from %s, size=%llu"
,
imageid
,
op
,
clientip
,
isize
);
}
else
{
if
(
host
.
s_addr
!=
cip
->
sin_addr
.
s_addr
)
FrisLog
(
"%s (%s): %s from %s (for %s), size=%llu"
,
imageid
,
cimageid
,
op
,
clientip
,
inet_ntoa
(
host
),
isize
);
else
FrisLog
(
"%s (%s): %s from %s, size=%llu"
,
imageid
,
cimageid
,
op
,
clientip
,
isize
);
}
memset
(
msg
,
0
,
sizeof
*
msg
);
memset
(
msg
,
0
,
sizeof
*
msg
);
msg
->
hdr
.
type
=
htonl
(
MS_MSGTYPE_PUTREPLY
);
msg
->
hdr
.
type
=
htonl
(
MS_MSGTYPE_PUTREPLY
);
strncpy
((
char
*
)
msg
->
hdr
.
version
,
MS_MSGVERS_1
,
strncpy
((
char
*
)
msg
->
hdr
.
version
,
MS_MSGVERS_1
,
sizeof
(
msg
->
hdr
.
version
));
sizeof
(
msg
->
hdr
.
version
));
/*
* Use the canonical name from here on out.
*/
if
(
cimageid
!=
NULL
)
{
strcpy
(
imageid
,
cimageid
);
free
(
cimageid
);
cimageid
=
NULL
;
}
/*
/*
* XXX we don't handle mirror mode right now.
* XXX we don't handle mirror mode right now.
*/
*/
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment