Changeset 36177


Ignore:
Timestamp:
11/14/15 17:58:48 (7 years ago)
Author:
obi
Message:

tithek fix free

File:
1 edited

Legend:

Unmodified
Added
Removed
  • titan/plugins/tithek/tvtoast.h

    r36172 r36177  
    1313        debug(99, "streamurl %s", streamurl);
    1414        return streamurl;
     15}
     16
     17int isbase641(char c)
     18{
     19        if((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '+' || c == '/' || c == '=')
     20                return 1;
     21        return 0;
     22}
     23
     24char decodebase641(char c)
     25{
     26        if(c >= 'A' && c <= 'Z') return(c - 'A');
     27        if(c >= 'a' && c <= 'z') return(c - 'a' + 26);
     28        if(c >= '0' && c <= '9') return(c - '0' + 52);
     29        if(c == '+') return(62);
     30        return 63;
     31}
     32
     33int b64dec1(char* dest, char* src)
     34{
     35        if(src && *src)
     36        {
     37                char* p = dest;
     38                int k, l = strlen(src) + 1;
     39                char* buf = NULL;
     40
     41                buf = malloc(l);
     42                if(buf == NULL) return 0;
     43
     44                for(k = 0, l = 0; src[k]; k++)
     45                {
     46                        if(isbase641(src[k]))
     47                                buf[l++] = src[k];
     48                }
     49
     50                for(k = 0; k < l; k += 4)
     51                {
     52                        char c1 = 'A', c2 = 'A', c3 = 'A', c4 = 'A';
     53                        char b1 = 0, b2 = 0, b3 = 0, b4 = 0;
     54
     55                        c1 = buf[k];
     56                        if(k + 1 < l)
     57                                c2 = buf[k + 1];
     58                        if(k + 2 < l)
     59                                c3 = buf[k + 2];
     60                        if(k + 3 < l)
     61                                c4 = buf[k + 3];
     62
     63                        b1 = decodebase641(c1);
     64                        b2 = decodebase641(c2);
     65                        b3 = decodebase641(c3);
     66                        b4 = decodebase641(c4);
     67                        *p++ = ((b1 << 2) | (b2 >> 4));
     68
     69                        if(c3 != '=')
     70                                *p++ = (((b2 & 0xf) << 4) | (b3 >> 2));
     71                        if(c4 != '=')
     72                                *p++ = (((b3 & 0x3) << 6) | b4);
     73
     74                        // strip last unchanged chars
     75                        if(k == l-4)
     76                                *p++ = '\0';
     77                }
     78
     79                free(buf);
     80                return(p - dest);
     81        }
     82        return 0;
    1583}
    1684
     
    63131//stretching = "exactfit";
    64132        curlstring = string_resub("curl = \"", "\"", tmpstr, 0);
     133        if(curlstring == NULL) goto end;
     134
    65135        stretching = string_resub("stretching = \"", "\"", tmpstr, 0);
    66136        printf("curlstring input: %s\n", curlstring);
    67         b64dec(curlstring, curlstring);
     137        b64dec1(curlstring, curlstring);
    68138        printf("curlstring decod: %s\n", curlstring);
    69139        printf("stretching: %s\n", stretching);
     
    72142        {
    73143                textbox(_("Message"), _("This channel is domain protected") , _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1200, 200, 0, 0);
    74                 goto end;
     144//              goto end;
    75145        }
    76146
     
    90160        streamurl = ostrcat(streamurl, " pageUrl=", 1, 0);
    91161        streamurl = ostrcat(streamurl, url, 1, 0);
    92 
    93162end:
    94163
    95         free(tmpstr), tmpstr = NULL;
    96         free(host), host = NULL;
    97         free(path), path = NULL;
     164        free(host), host = NULL;
     165        free(path), path = NULL;
     166        free(tmpstr), tmpstr = NULL;
    98167        free(url), url = NULL;
     168        free(curlstring), curlstring = NULL;
    99169        free(stretching), stretching = NULL;
    100         free(curlstring), curlstring = NULL;
    101170        free(app), app = NULL;
    102171
Note: See TracChangeset for help on using the changeset viewer.