RFC 2741 section 5.2 states that searchrange.end is non-inclusive.
appl_varbind_valid() and appl_response() currently tests inclusive.
The appl_varbind_valid() case is for backends that support
searchrange.end (like agentx) and the appl_response() case for
those who do not and need a fixup (basically everything else).

OK?

martijn

diff --git a/application.c b/application.c
index 33143d6..b3a2603 100644
--- a/application.c
+++ b/application.c
@@ -1100,7 +1100,7 @@ appl_response(struct appl_backend *backend, int32_t 
requestid,
                         */
                        eomv |= !backend->ab_range && next &&
                            ober_oid_cmp(&(vb->av_oid),
-                           &(origvb->avi_varbind.av_oid_end)) > 0;
+                           &(origvb->avi_varbind.av_oid_end)) >= 0;
                        /* RFC 3584 section 4.2.2.1 */
                        if (ureq->aru_pduversion == SNMP_V1 &&
                            vb->av_value != NULL &&
@@ -1283,7 +1283,7 @@ appl_varbind_valid(struct appl_varbind *varbind,
                                }
                        }
                        if (range && ober_oid_cmp(&(varbind->av_oid),
-                           &(request->avi_varbind.av_oid_end)) > 0) {
+                           &(request->avi_varbind.av_oid_end)) >= 0) {
                                *errstr = "end oid not honoured";
                                return 0;
                        }

Reply via email to