summaryrefslogtreecommitdiff
path: root/lib9p/srv.c
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2025-04-17 02:49:53 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2025-04-17 12:24:46 -0600
commit5c4004ff3bd66306e03579f6ee350b3517aa4ea9 (patch)
tree18ee437f386ee581e50fffb8398905bf295d8eaf /lib9p/srv.c
parent0cf05b66f94bfe02ecca37a4cbafba25b27c32ae (diff)
lib9p: Check that we compile for the whole the matrix of "enable"-toggles
Diffstat (limited to 'lib9p/srv.c')
-rw-r--r--lib9p/srv.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/lib9p/srv.c b/lib9p/srv.c
index 6ab2ab2..8917084 100644
--- a/lib9p/srv.c
+++ b/lib9p/srv.c
@@ -174,17 +174,26 @@ static inline bool srv_check_perm(struct srv_req *ctx, struct lib9p_stat *stat,
return mode & action;
}
-struct lib9p_srv_authinfo *srv_authinfo_new(struct lib9p_s uname, lib9p_nuid_t uid) {
+struct lib9p_srv_authinfo *srv_authinfo_new(struct lib9p_s uname
+#if CONFIG_9P_ENABLE_9P2000_u || CONFIG_9P_ENABLE_9P2000_L
+ , lib9p_nuid_t uid
+#endif
+ ) {
struct lib9p_srv_authinfo *ret = malloc(sizeof(struct lib9p_srv_authinfo) + uname.len);
if (!ret)
return NULL;
+#if CONFIG_9P_ENABLE_9P2000_u || CONFIG_9P_ENABLE_9P2000_L
ret->uid = uid;
+#endif
ret->uname.len = uname.len;
ret->uname.utf8 = (void *)&ret[1];
memcpy(ret->uname.utf8, uname.utf8, uname.len);
ret->refcount = 1;
return ret;
}
+#if !(CONFIG_9P_ENABLE_9P2000_u || CONFIG_9P_ENABLE_9P2000_L)
+#define srv_authinfo_new(name, num) srv_authinfo_new(name)
+#endif
struct lib9p_srv_authinfo *srv_authinfo_decref(struct lib9p_srv_authinfo *authinfo) {
assert(authinfo);
@@ -272,8 +281,8 @@ static inline void srv_fid_del(struct srv_req *ctx, lib9p_fid_t fid, bool remove
if (remove) {
if (pathinfo->parent_dir == fidinfo->path) {
- lib9p_errorf(&ctx->basectx,
- LIB9P_ERRNO_L_EBUSY, "cannot remove root");
+ lib9p_error(&ctx->basectx,
+ LIB9P_ERRNO_L_EBUSY, "cannot remove root");
goto clunk;
}
struct srv_pathinfo *parent = map_load(&ctx->parent_sess->paths, pathinfo->parent_dir);
@@ -375,7 +384,7 @@ static ssize_t srv_write_Rmsg(struct srv_req *req, struct lib9p_Rmsg_send_buf *r
#define srv_nonrespond_errorf errorf
static void srv_respond_error(struct srv_req *req) {
-#if CONFIG_9P_ENABLE_9P2000_u
+#if CONFIG_9P_ENABLE_9P2000_u || CONFIG_9P_ENABLE_9P2000_L
assert(req->basectx.err_num);
#endif
assert(req->basectx.err_msg[0]);
@@ -647,7 +656,7 @@ void lib9p_srv_worker(struct srv_req *ctx) {
case LIB9P_TYP_Tstat: handler = (tmessage_handler)handle_Tstat; break;
case LIB9P_TYP_Twstat: handler = (tmessage_handler)handle_Twstat; break;
#if CONFIG_9P_ENABLE_9P2000_p9p
- case LIB9P_TYP_Topenfd: handler = (tmessage_handler)handle_Topenfd; break
+ case LIB9P_TYP_Topenfd: handler = (tmessage_handler)handle_Topenfd; break;
#endif
#if CONFIG_9P_ENABLE_9P2000_e
case LIB9P_TYP_Tsession: handler = (tmessage_handler)handle_Tsession; break;
@@ -824,7 +833,7 @@ static void handle_Tattach(struct srv_req *ctx,
LIB9P_ERRNO_L_EACCES, "FID provided as auth-file is for user=\"%.*s\" and cannot be used for user=\"%.*s\"",
afid->authinfo->uname.len, afid->authinfo->uname.utf8,
req->uname.len, req->uname.utf8);
-#if CONFIG_9P_ENABLE_9P2000_u
+#if CONFIG_9P_ENABLE_9P2000_u || CONFIG_9P_ENABLE_9P2000_L
else if (afid->authinfo->uid != req->n_uid)
lib9p_errorf(&ctx->basectx,
LIB9P_ERRNO_L_EACCES, "FID provided as auth-file is for user=%"PRIu32" and cannot be used for user=%"PRIu32,