Coder Social home page Coder Social logo

APP packet name length about uvgrtp HOT 1 CLOSED

ultravideo avatar ultravideo commented on May 27, 2024
APP packet name length

from uvgrtp.

Comments (1)

jrsnen avatar jrsnen commented on May 27, 2024

Hello,

there is a problem with the names of the APP packets. API guide states the following:
image

When in fact, any name that is longer than 3 characters results in name corruption. For example, a packet named "123" produces:
image

whereas packet named "1234" produces:
image

In the rtcp_app_packet declaration the name is represented as
image

So it is converted to an array with a length of [4] and is probably null-terminated, because the function takes char pointer

I'm actually not convinced there is a problem. When looking at the spec (RFC 3550), 4 is the correct length for the name
image

Then, when looking at the name
image

I get the impression that you are supposed to use all 4 bytes for your name and not less. How uvgRTP handles this is just assume there are 4 characters there and copies them (this could probably be handled better, but it works in context of the specification.) This means that 123 will have the null-termination even though it is not supposed to have it. In case of 1234, it is copied without the null-termination, but this is actually correct, since the termination is not supposed to be there. In other words, when printing the name, you should not assume it is null-terminated, because it is not supposed to be.

 rtp_error_t send_app_packet(char *name, uint8_t subtype, size_t payload_len, uint8_t *payload);

You are right, that the char* in the API is misleading.

So I guess this is the intended behaviour with a misleading API guide. But I think that 3 characters long names are a bit short.
Either the API should be fixed, or the names allowed to be longer, API fix is easier tho :)

The length is specified by the RFC, so it cannot be increased. The API should probably be improved in some way.

p.s also when converting the name from the app packet that we receive back to char*, it becomes non null-terminated.

I'm not super familiar with C, but maybe you should use a conversion function that adds the null-termination.

from uvgrtp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.