mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-01 22:48:25 +00:00
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.
This commit is contained in:
parent
201fe40653
commit
3b1d004d41
@ -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 buffer *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
|
||||
|
@ -2195,8 +2195,10 @@ spoe_encode_message(struct stream *s, struct spoe_context *ctx,
|
||||
|
||||
/* Fetch the argument 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;
|
||||
|
Loading…
Reference in New Issue
Block a user