Fix build.sh: add proper escaping for nextcloud-mail ldflags

The build was failing with Go linker errors because special characters in
user-provided credentials (especially passwords) were not being properly escaped.

Added escape_ldflag() function to handle:
- Backslashes
- Double quotes
- Spaces

This ensures that any user input (including passwords with special characters)
is safely passed to Go's linker without breaking the build command.
This commit is contained in:
WLTBAgent committed 2026-02-23 21:55:51 +00:00
1 parent 72b4337cc2
commit 154a93a148
1 file changed
+22 -1
+22 -1
View File
@@ -105,7 +105,28 @@ echo "✓ nextcloud-calendar built successfully"
# Build nextcloud-mail # Build nextcloud-mail
echo "Building nextcloud-mail..." echo "Building nextcloud-mail..."
cd "$SCRIPT_DIR/tools/go/nextcloud-mail" cd "$SCRIPT_DIR/tools/go/nextcloud-mail"
go build -ldflags="-X main.BuildIMAPServer=$IMAP_SERVER -X main.BuildIMAPPort=$IMAP_PORT -X main.BuildIMAPUser=$IMAP_USER -X main.BuildIMAPPassword=$IMAP_PASS -X main.BuildSMTPServer=$SMTP_SERVER -X main.BuildSMTPPort=$SMTP_PORT -X main.BuildSMTPUser=$SMTP_USER -X main.BuildSMTPPassword=$SMTP_PASS -X main.BuildUseSSL=$USE_SSL -X main.BuildIgnoreCerts=$IGNORE_CERTS" -o ~/bin/nextcloud-mail .
# Build ldflags - escape special characters in values
escape_ldflag() {
local value="$1"
# Escape backslashes, double quotes, and spaces
value="${value//\\/\\\\}"
value="${value//\"/\\\"}"
echo "$value"
}
LDFLAGS="-X main.BuildIMAPServer=\"$(escape_ldflag "$IMAP_SERVER")\""
LDFLAGS="$LDFLAGS -X main.BuildIMAPPort=\"$(escape_ldflag "$IMAP_PORT")\""
LDFLAGS="$LDFLAGS -X main.BuildIMAPUser=\"$(escape_ldflag "$IMAP_USER")\""
LDFLAGS="$LDFLAGS -X main.BuildIMAPPassword=\"$(escape_ldflag "$IMAP_PASS")\""
LDFLAGS="$LDFLAGS -X main.BuildSMTPServer=\"$(escape_ldflag "$SMTP_SERVER")\""
LDFLAGS="$LDFLAGS -X main.BuildSMTPPort=\"$(escape_ldflag "$SMTP_PORT")\""
LDFLAGS="$LDFLAGS -X main.BuildSMTPUser=\"$(escape_ldflag "$SMTP_USER")\""
LDFLAGS="$LDFLAGS -X main.BuildSMTPPassword=\"$(escape_ldflag "$SMTP_PASS")\""
LDFLAGS="$LDFLAGS -X main.BuildUseSSL=\"$(escape_ldflag "$USE_SSL")\""
LDFLAGS="$LDFLAGS -X main.BuildIgnoreCerts=\"$(escape_ldflag "$IGNORE_CERTS")\""
go build -ldflags="$LDFLAGS" -o ~/bin/nextcloud-mail .
echo "✓ nextcloud-mail built successfully" echo "✓ nextcloud-mail built successfully"
echo "" echo ""