vlmcsd
vlmcsd copied to clipboard
Build (make) fails with the getEpid function?
The docker compose build fails. Im using this dockerfile:
FROM alpine:latest as builder
WORKDIR /root
RUN apk add --no-cache git make build-base && \
git clone --branch master --single-branch https://github.com/Wind4/vlmcsd.git && \
cd vlmcsd/ && \
make
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /root/vlmcsd/bin/vlmcsd /usr/bin/vlmcsd
EXPOSE 1688/tcp
CMD [ "/usr/bin/vlmcsd", "-D", "-d" ]
Then i get this error with the make command:
kms.c: In function 'getEpid':
kms.c:502:9: warning: dangling pointer 'pid' to 'ePid' may be used [-Wdangling-pointer=]
502 | getEpidFromString(baseResponse, pid);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kms.c:473:30: note: 'ePid' declared here
473 | char ePid[PID_BUFFER_SIZE];
| ^~~~
LD ../bin/vlmcsd <- vlmcsd.o kmsdata.o crypto.o kms.o endian.o output.o shared_globals.o helpers.o network.o rpc.o crypto_internal.o
LD ../bin/vlmcs <- vlmcs.o kmsdata-full.o crypto.o kms.o endian.o output.o shared_globals.o helpers.o network.o rpc.o crypto_internal.o dns_srv.o
gmake[1]: Leaving directory '/root/vlmcsd/src'
Can you guys help me?
This is a bug in the code that needs to be patched.
The problem:
- char ePid[PID_BUFFER_SIZE]; is declared within a block {}
- pid is set to point to that memory
- ePid is lost when the block {} scope ends
- pid now points to uncertain memory that may be trashed at any moment.
- This is your "dangling pointer"
Quick fix:
- Move "char ePid[PID_BUFFER_SIZE];" up a few lines just after "const char* pid;"
- It will remain in scope and is safe to use.
Thank you, I feel like an idiot. Just changed the kms.c file and moved the line 473 to after 467 and now it works again.