Ignore:
Timestamp:
Apr 10, 2007, 5:27:38 AM (14 years ago)
Author:
Paul Smedley
Message:

Updated source to 3.0.25rc1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/samba/source/libsmb/libsmbclient.c

    r22 r26  
    340340
    341341        if (*p == '/') {
    342 
    343                 strncpy(server, context->workgroup,
    344                         ((strlen(context->workgroup) < 16)
    345                          ? strlen(context->workgroup)
    346                          : 16));
    347                 server[server_len - 1] = '\0';
     342                int wl = strlen(context->workgroup);
     343
     344                if (wl > 16) {
     345                        wl = 16;
     346                }
     347
     348                strncpy(server, context->workgroup, wl);
     349                server[wl] = '\0';
    348350                return 0;
    349                
    350351        }
    351352
     
    500501                  SMBCSRV * server)
    501502{
    502         if ( send_keepalive(server->cli->fd) == False )
    503                 return 1;
     503        size_t size;
     504        struct sockaddr addr;
     505
     506        /*
     507         * Although the use of port 139 is not a guarantee that we're using
     508         * netbios, we assume so.  We don't want to send a keepalive packet if
     509         * not netbios because it's not valid, and Vista, at least,
     510         * disconnects the client on such a request.
     511         */
     512        if (server->cli->port == 139) {
     513                /* Assuming netbios.  Send a keepalive packet */
     514                if ( send_keepalive(server->cli->fd) == False ) {
     515                        return 1;
     516                }
     517        } else {
     518                /*
     519                 * Assuming not netbios.  Try a different method to detect if
     520                 * the connection is still alive.
     521                 */
     522                size = sizeof(addr);
     523                if (getpeername(server->cli->fd, &addr, &size) == -1) {
     524                        return 1;
     525                }
     526        }
    504527
    505528        /* connection is ok */
     
    918941                 POLICY_HND *pol)
    919942{
     943        int flags;
    920944        struct in_addr ip;
    921945        struct cli_state *ipc_cli;
     
    952976                }
    953977       
     978                flags = 0;
     979                if (context->flags & SMB_CTX_FLAG_USE_KERBEROS) {
     980                        flags |= CLI_FULL_CONNECTION_USE_KERBEROS;
     981                }
     982
    954983                zero_ip(&ip);
    955984                nt_status = cli_full_connection(&ipc_cli,
     
    957986                                                &ip, 0, "IPC$", "?????", 
    958987                                                username, workgroup,
    959                                                 password, 0,
     988                                                password, flags,
    960989                                                Undefined, NULL);
    961990                if (! NT_STATUS_IS_OK(nt_status)) {
Note: See TracChangeset for help on using the changeset viewer.