mirror of
https://github.com/novatiq/packages.git
synced 2026-07-30 07:13:07 +01:00
- Update haproxy download URL and hash - Add new patches (see https://www.haproxy.org/bugs/bugs-1.8.21.html) Signed-off-by: Christian Lachner <gladiac@gmail.com>
51 lines
2.0 KiB
Diff
51 lines
2.0 KiB
Diff
commit dcb8c973fdfa6b96b651b06740b74b1d492cb92d
|
|
Author: Christopher Faulet <cfaulet@haproxy.com>
|
|
Date: Mon May 6 09:53:10 2019 +0200
|
|
|
|
BUG/MEDIUM: spoe: Be sure the sample is found before setting its context
|
|
|
|
When a sample fetch is encoded, we use its context to set info about the
|
|
fragmentation. But if the sample is not found, the function sample_process()
|
|
returns NULL. So we me be sure the sample exists before setting its context.
|
|
|
|
This patch must be backported to 1.9 and 1.8.
|
|
|
|
(cherry picked from commit 3b1d004d410129efcf365643d2583dcd2cb6ed0f)
|
|
Signed-off-by: Willy Tarreau <w@1wt.eu>
|
|
(cherry picked from commit 2e062883b8f94500314b7c863c1a13e3c9af23ca)
|
|
[wt: adjust buf->chunk context]
|
|
Signed-off-by: Willy Tarreau <w@1wt.eu>
|
|
|
|
diff --git a/include/proto/spoe.h b/include/proto/spoe.h
|
|
index cce13e50..74fe9466 100644
|
|
--- a/include/proto/spoe.h
|
|
+++ b/include/proto/spoe.h
|
|
@@ -169,8 +169,8 @@ spoe_encode_data(struct sample *smp, char **buf, char *end)
|
|
* reamining. When all the sample is encoded, the offset is reset to 0.
|
|
* So the caller know it can try to encode the next sample. */
|
|
struct chunk *chk = &smp->data.u.str;
|
|
- unsigned int *len = (smp->ctx.a[0] ? smp->ctx.a[0] : 0);
|
|
- unsigned int *off = (smp->ctx.a[1] ? smp->ctx.a[1] : 0);
|
|
+ unsigned int *len = smp->ctx.a[0];
|
|
+ unsigned int *off = smp->ctx.a[1];
|
|
|
|
if (!*off) {
|
|
/* First evaluation of the sample : encode the
|
|
diff --git a/src/flt_spoe.c b/src/flt_spoe.c
|
|
index aeb1fde7..9f745943 100644
|
|
--- a/src/flt_spoe.c
|
|
+++ b/src/flt_spoe.c
|
|
@@ -2187,8 +2187,10 @@ spoe_encode_message(struct stream *s, struct spoe_context *ctx,
|
|
|
|
/* Fetch the arguement value */
|
|
smp = sample_process(s->be, s->sess, s, dir|SMP_OPT_FINAL, arg->expr, NULL);
|
|
- smp->ctx.a[0] = &ctx->frag_ctx.curlen;
|
|
- smp->ctx.a[1] = &ctx->frag_ctx.curoff;
|
|
+ if (smp) {
|
|
+ smp->ctx.a[0] = &ctx->frag_ctx.curlen;
|
|
+ smp->ctx.a[1] = &ctx->frag_ctx.curoff;
|
|
+ }
|
|
ret = spoe_encode_data(smp, buf, end);
|
|
if (ret == -1 || ctx->frag_ctx.curoff)
|
|
goto too_big;
|